前言
有時候需要實現窗口可擴展,換句話說有一部分widget能夠隱藏,顯示,並且對話框大小可以隨着widget變動而做出相應的變化;如圖:
在點擊CheckBox時,GroupBox_2能夠顯示,取消選中時,又恢復隱藏狀態。如左圖:
具體步驟:
1, 在designer中建立必須的幾個widget,其中Groupbox我都設置sizePolicy為Fixed,限制了大小;
2, 在選擇你的主窗口右擊,設置Layout,你可以選擇你想要的布局。其中1,2,5,6都可以選。然后再次右擊進入如下窗口,選擇Adjust Size,這樣整體布局就設置好了。
3, 然后我們可以看到主對話框的屬性編輯欄出現了紅色的布局設置選項,設置layoutSizeConstraint的值為setFixedSize;
4, 難點和需要注意的部分已經結束了。然后是信號槽的編寫,具體參看詳細代碼:
main.cpp #include "extensiondialog.h" #include <QtGui/QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); extensionDialog w; w.show(); return a.exec(); } Extensiondialog.h #ifndef EXTENSIONDIALOG_H #define EXTENSIONDIALOG_H #include <QtGui/QDialog> #include "ui_extensiondialog.h" #include <QGroupBox> class extensionDialog : public QDialog { Q_OBJECT public: extensionDialog(QWidget *parent = 0, Qt::WFlags flags = 0); ~extensionDialog(); private: Ui::extensionDialogClass ui; private slots: void Slot_checkBox(); }; #endif // EXTENSIONDIALOG_H extensiondialog.cpp #include "extensiondialog.h" extensionDialog::extensionDialog(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { ui.setupUi(this); ui.groupBox_2->hide(); connect(ui.checkBox,SIGNAL(clicked()),this,SLOT(Slot_checkBox())); } void extensionDialog::Slot_checkBox() { if(ui.checkBox->isChecked()) ui.groupBox_2->show(); else ui.groupBox_2->hide(); } extensionDialog::~extensionDialog() { }