2010-10-08 25 views
3

全部問候,QT分隔符部件?

是否有任何窗口小部件可以分開兩個QWidgets,並且還可以完全專注於一個窗口小部件。 如下圖所示? alt text

由於提前, umanga

+0

我已經添加了一些簡單的代碼作爲例子。 – mosg 2010-10-08 08:43:48

+0

感謝mosg爲你的時間。你拯救了我的一天! – 2010-10-12 00:57:22

回答

6

如何QSplitter

QWidget 1,例如,QListViewQWidget 2QWidget s的組合(左邊的部分是簡單的QPushButton帶有顯示/隱藏字幕,右邊部分是另一個小部件)...您所要做的就是在用戶點擊QPushButton時隱藏您的QWidget2。 ..

如果你需要一個例子,我可能會發布它。


更新

的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(); 
} 

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 

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 >"); 
    } 
} 
+0

感謝mogs,你的意思是我使用QSplitter作爲深藍色的部件嗎? – 2010-10-08 08:09:22

+0

如果你能發表一個例子,這將是非常好的。謝謝 – 2010-10-08 08:09:50