1. 新建工程项目,application-QT widgets application,名字dialog,基类选择QDialog,选择使用界面文件(.ui)。
2. 打开dialo.ui文件,即打开了界面编辑,界面中包含Buttons、Containers、input widgets等窗口部件。
(1)依次向对话框中拖入3个pushButton,类名分别命名为okButton、cancelButton、moreButton,text名字输入OK、Cancel、More,default设置为真、真、假。
在Cancel和More的按钮之间添加一个verticalspacers。
(2)拖入一个Group Box,类名字命名为primaryBox,title设置为primarykey。然后添加两个label,text输入Column和Order。然后再拖入两个combo Box,命名为primaryColumnCombo和primaryOrderCombo,然后右键选择编辑项目,分别增加None,Ascending和Desceding条目。
(3)在primaryColumnCombo后添加一个horizontalspacers。
(4)单击groupBox,布局-栅格化布局。然后布局-调整大小。使得groupBox大小合适,groupBox中部件排列整齐。
(5)然后可以复制groupBox,按住Ctrl,拖动即可复制。复制的groupBo命名为secondaryBox和ternaryBox。
(6)单击对话框空白处,布局-栅格布局。最终结果如下:
3. 链接信号和槽。
选择edit-edit signals/slots,进入信号/槽编辑模式。点击OKbutton出现红色箭头,拖动到空白处,松开鼠标,弹出链接配置对话框,选择clicked()和accepted()信号;cancel button选择clicked()和rejected()信号;more button拖动到secondaryBox和ternaryBox,选择toggled()和setVisible();最终的信号链接为:
setVisible函数可以用来显示部件,而toggled信号是当按钮状态发生变化其就被发射,并返回一定数值。通过将More按钮和两个groupBox链接,当more按钮按下就可以隐藏或者展开两个GroupBox。
4. 编辑代码:
dialog.h
dialog.cpp
main.cpp
5. 运行结果: