qt 界面设计使用布局,有布局层次(包括对象和类)和布局管理
1.有两个组件面板有layouts和spacers。
先拖放布局组件到窗体,在往布局组件里拖放其他控件。
或者是选择多个空间后,在选择设计工具栏的对应的按钮,设置水平或垂直布局、
如果嫌弃控之间间隙太大,可以使用spacers来填充。
2.上面有工具栏
edit widget :编辑状态
edit buddies:伙伴关系,可以设置一个label和一个组件成为伙伴关系,用于快捷键切换到组件的焦点。
edit tab order:顺序编辑,按tab键是,各组件跳动的顺序
edit signal/slots :信号槽的可视化设计,好像只能选择qt自带的信号和槽函数,至于想使用自定义槽函数,只能通过自己手动写代码实现connect的关联。
3.创建菜单栏和工具栏,需先设计好QAction,而QAction 有可能需要添加资源。所以按下面的流程
1.添加资源文件
默认qt是没有resources文件夹 的,所有要手动先创建一个资源文件,在file->new file or project 菜单 选择qt ->qt resource file
可以命名为res.qrc。会自动创建一份与headers、sources和forms并列的resources文件组。然后在右键res.qrc 选择菜单中的
添加现有文件或者现有目录。这样就可以把资源载入到qt项目中了。
2.设计qaction(这里是通过可视化设计的,代码设计前面已说过了。)
action是一种不可见的界面元素,主要用于菜单栏和工具栏的按钮设计。使用的主要信号是trigger(),为trigger()信号编写槽函数,就可以吧按钮关联到此槽函数。
在action编辑器上有一个工具栏,可新建、复制、粘贴、删除action.
text:显示文字
object name: 对象名字
tooltip: 鼠标在上面停留显示 的提示文字
icon : 设置显示的图标,就是从资源文件中选择图片文件。
shortcut: 快捷键
3.菜单栏设计
qt 的菜单栏设计和vs其实是一样的,在菜单栏显示的 type here 的地方双击,输入分组名称,然后回车,就可以创建菜单分组了。分组后,从action编辑器将action 拖放到菜单的分组下就可以创建一个菜单项了。
4.工具栏的设计
和菜单栏一样,直接从action编辑器将action 拖放到工具栏位置即可。默认初始化只有一个工具栏,如需多个工具栏,主窗口右键选择 add tool bar 即可新建一个工具栏。
如果想调整工具栏的位置:
1.可以直接拖动工具栏,放在想要的位置,比如放在最左边垂直摆放
2.在选中工具栏,在右下角的其属性设置geometry和orientation.
如果是用代码实现
1.setOrientation 设置水平或垂直方向
2.使用布局管理器来设置显示的位置,把工具栏当成一个普通的空间看待即可。
5.action 功能实现
action 使用的主要信号是trigger()
a. 如果想使用现成的槽函数,直接在signals & slot editor 选择即可
b.如果是需要自定义的槽函数,在action editor 选择某个action 右键 选择转到槽(go to slot),选择trigger()信号,
自动在MainWindow类生成槽函数,也自动实现connect关联了。不需要手动写connect的代码了。
其实这些可视化的操作,背后生成的代码都在一个ui_xxx.h(如ui_mainwindow.h)的文件中,
这个.h文件是编译后自动生成,出现在debug或者release目录下,这份文件不需要手动修改,也没必要添加到项目中。
使用控件,如需特别设置控件的样式可以使用setStyleSheet来实现。
延伸:
Qt::WA_DeleteOnClose
Qt::WA_DeleteOnClose 是一个 Qt 框架中的窗口属性,它控制了窗口关闭时的对象销毁行为。具体来说,Qt::WA_DeleteOnClose 的作用如下:
当一个窗口部件(QWidget)的 Qt::WA_DeleteOnClose 属性被设置为 true 时,它告诉 Qt 在关闭窗口时自动删除这个窗口部件对象。这通常用于对话框、子窗口等临时性的窗口,以确保在关闭后释放相关资源和内存,而不需要手动管理对象的生命周期。