QT分隔符小部件?

Ash*_*iya 3 c++ qt qt4

问候所有,

是否有任何小部件可以分隔两个QWidgets,并且还可以完全专注于一个小部件.如下图所示? 替代文字

提前谢谢,umanga

mos*_*osg 6

QSplitter怎么

QWidget 1,例如,QListView.QWidget 2QWidgets 的组合(左边部分很简单QPushButton,显示/隐藏字幕,右边部分是另一个小部件)...所有你需要做的就是当用户点击时隐藏你的QWidget2 QPushButton...

如果你需要一个例子,我可以发布它.


更新

main.cpp中

#include "splitter.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    splitter w;
    w.show();
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

splitter.h

#ifndef SPLITTER_H
#define SPLITTER_H

#include <QtGui/QDialog>

class splitter : public QDialog
{
    Q_OBJECT;

    QWidget*        widget1;
    QWidget*        widget2;

    QPushButton*    button;

public:
    splitter(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~splitter();

private slots:
    void    showHide(void);
};

#endif // SPLITTER_H
Run Code Online (Sandbox Code Playgroud)

splitter.cpp

#include <QtGui>

#include "splitter.h"

splitter::splitter(QWidget *parent, Qt::WFlags flags)
    : QDialog(parent, flags)
{
    QApplication::setStyle("plastique");

    QListView*      listView = new QListView;
    QTableView*     tableView = new QTableView;
    button = new QPushButton("Hide >");

    widget1 = new QWidget;
    QHBoxLayout*    w1Layout = new QHBoxLayout;
    w1Layout->addWidget(listView);
    w1Layout->addWidget(button);
    widget1->setLayout(w1Layout);

    widget2 = new QWidget;
    QHBoxLayout*    w2Layout = new QHBoxLayout; 
    w2Layout->addWidget(tableView);
    widget2->setLayout(w2Layout);

    QSplitter *mainSplitter = new QSplitter(this);
    mainSplitter->addWidget(widget1);
    mainSplitter->addWidget(widget2);

    connect(button, SIGNAL(clicked()), this, SLOT(showHide()));

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(mainSplitter);

    setLayout(mainLayout);
}
splitter::~splitter()
{}
void splitter::showHide(void)
{
    if (widget2->isVisible())
    {   // hide     
        widget2->setVisible(false);
        button->setText("< Show");
    }
    else
    {   // show     
        widget2->setVisible(true);
        button->setText("Hide >");
    }
}
Run Code Online (Sandbox Code Playgroud)