C++ QT分隔符小部件?

C++ QT分隔符小部件?,c++,qt,qt4,C++,Qt,Qt4,大家好, 是否有任何小部件可以将两个QWidget分开,并将焦点完全集中到一个小部件上。 如下图所示? 提前感谢,, 乌曼加怎么样 QWidget 1,对于exmaple,QListViewQWidget 2是QWidgets的组合(左侧是带有显示/隐藏标题的简单QPushButton,右侧是另一个小部件)。。。当用户单击QPushButton时,您所要做的就是隐藏QWidget2 如果你需要一个例子,我可以贴出来 已更新 main.cpp #包括“splitter.h” #包括 int m

大家好,

是否有任何小部件可以将两个QWidget分开,并将焦点完全集中到一个小部件上。 如下图所示?

提前感谢,, 乌曼加怎么样

QWidget 1,对于exmaple,
QListView
QWidget 2
QWidget
s的组合(左侧是带有显示/隐藏标题的简单
QPushButton
,右侧是另一个小部件)。。。当用户单击
QPushButton
时,您所要做的就是隐藏QWidget2

如果你需要一个例子,我可以贴出来


已更新

main.cpp

#包括“splitter.h”
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
分离器w;
w、 show();
返回a.exec();
}
拆分器

\ifndef拆分器
#定义拆分器
#包括
类拆分器:公共QDialog
{
Q_对象;
QWidget*widget1;
QWidget*widget2;
QPushButton*按钮;
公众:
拆分器(QWidget*parent=0,Qt::WFlags=0);
~splitter();
专用插槽:
void showHide(void);
};
#endif//SPLITTER\u H
splitter.cpp

#包括
#包括“splitter.h”
拆分器::拆分器(QWidget*父,Qt::WFlags标志)
:QDialog(父级、标志)
{
QApplication::setStyle(“plastique”);
QListView*listView=新的QListView;
QTableView*tableView=新的QTableView;
按钮=新的QPushButton(“隐藏>”);
widget1=新的QWidget;
QHBoxLayout*w1Layout=新的QHBoxLayout;
w1Layout->addWidget(列表视图);
w1Layout->addWidget(按钮);
widget1->setLayout(w1Layout);
widget2=新的QWidget;
QHBoxLayout*w2Layout=新的QHBoxLayout;
w2Layout->addWidget(tableView);
widget2->setLayout(w2Layout);
QSplitter*mainSplitter=新的QSplitter(此);
mainSplitter->addWidget(widget1);
mainSplitter->addWidget(widget2);
连接(按钮、信号(单击())、此、插槽(显示隐藏());
QVBoxLayout*mainLayout=新的QVBoxLayout;
mainLayout->addWidget(mainSplitter);
设置布局(主布局);
}
拆分器::~splitter()
{}
无效拆分器::显示隐藏(无效)
{
如果(widget2->isVisible())
{//隐藏
widget2->setVisible(假);
按钮->设置文本(setVisible(真);
按钮->设置文本(“隐藏>”;
}
}

谢谢mogs,你的意思是我使用深蓝色的QSplitter作为小部件吗?我添加了一些简单的代码作为示例。感谢mosg抽出时间。你救了我一天!
#include "splitter.h"
#include <QtGui/QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    splitter w;
    w.show();
    return a.exec();
}
#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
#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 >");
    }
}