控件间的关系,体现在控件的排列方式、布局、按钮文字图标、菜单文字图标等多个方面。而界面上的快捷键、Tab键顺序等,都会影响操作的便捷性。界面设计本身是一门复杂的学问,它需要考虑程序的运行环境,如屏幕大小及比例、操作系统风格等多个因素。
控件布局
Qt Designer中的控件布局包括如下类型:
- 水平布局(QHBoxLayout),把多个控件以水平的顺序依次排开;
- 垂直布局(QVBoxLayout),把多个控件以垂直的顺序依次排开;
- 栅格布局(QGridLayout),以网格的形式将多个控件按照矩阵方式排列;
- 表单布局(QFormLayout),像表单那样,采用两列的形式排列控件。
在实际应用中,可以灵活运用这些布局。例如采用嵌套布局的方式,综合运用多种类型的布局。
控件Tab键顺序
程序运行时,按Tab
(制表符)键,可以按设定的顺序切换界面控件的焦点——点击Qt Designer工具栏上的“编辑Tab顺序”按钮(如下图),依次单击蓝色数字框,就能设置Tab键顺序,如果点错,可以右键调出上下文菜单,选择“重新开始”命令重置Tab键顺序。
设置后的顺序标签状态如下:
控件的伙伴(buddy)关系
控件的伙伴关系,是指控件与对应的Label
标签关联,在Label
标签上按快捷键(ALT键+字母),焦点会移到关联的控件上。标签上的快捷键字幕,通过在Label
的text
属性中增加&
和字符来设定,在界面运行的Label
标签文字显示时,&
及对应字符不显示。例如“UI文件选择”添加一个ALT+U
,那么就将text
属性“UI文件选择”修改为“UI文件选择(&U)”。点击“编辑伙伴”按钮,即可编辑控件伙伴关系。进入“编辑伙伴”状态后,左键选择标签Label
拖拽到关联的控件上,即可建立控件伙伴关系。
在代码中,伙伴关系通过setBuddy
方法确定,生成的代码片段如下:
#if QT_CONFIG(shortcut)
self.labelUI.setBuddy(self.pushButtonUISelect)
self.labelCode.setBuddy(self.pushButtonCodeSelect)
self.labelTool.setBuddy(self.pushButtonToolSelect)
#endif // QT_CONFIG(shortcut)
QWidget.setTabOrder(self.textEditUI, self.pushButtonUISelect)
QWidget.setTabOrder(self.pushButtonUISelect, self.textEditCode)
QWidget.setTabOrder(self.textEditCode, self.pushButtonCodeSelect)
QWidget.setTabOrder(self.pushButtonCodeSelect, self.textEditTool)
QWidget.setTabOrder(self.textEditTool, self.pushButtonToolSelect)
QWidget.setTabOrder(self.pushButtonToolSelect, self.pushButtonRun)