QMain Window 是主窗口类,具有菜单栏、工具栏、状态栏等主窗口常见的界面元素。要设计主窗口上的菜单栏、工具栏、、按钮的下拉菜单、组件的快捷菜单等,需要用到QAction类。QAction对象就是实现某个功能的 “动作”,我们称其为Action。在UI可视化设计时,我们可以设计很多Action,然后用Action创建菜单选项和工具按钮。
通过本节学习我设计了一个示例项目 2024_6_23_1 ,窗口基类选择QMainWindow,示例运行时如图1-1所示,这个示例实现的是一个简单的文本编辑器,窗口中间工作区是一个QPlain TextEdit 组件。
本示例的设计和实现过程涉及较多技术点。
1、可视化设计Action 通过Action可视化设计菜单栏和工具栏。设计可复选的Action,如设置粗体、斜体、下划线的3个Action;设计分组互斥型可复选的Action,如选择界面语言的两个Action。
2、在UI可视化设计时,将设计好的Action与QPlainTextEdit组件的公共槽关联,实现剪切、复制、粘贴、撤销等常见的编辑操作。
3、根据QPlainTextEdit组件里当前选中内容的变化,更新相关Action的状态,列如,更新剪切、复制、粘贴等编辑操作Action的enabled属性
4、在窗口类的构造函数里,通过编写代码创建UI可视化设计无法实现的界面功能,其中包括:在工具栏上创建用于设置字体大小的QSpinBox组件和用于选择字体的QFontComboBox组件因为这两个组件在UI可视化设计时无法放置在工具栏上,创建QActionGroup分组对向,将选择界面语言的两个Action添加到分组,实现互斥选择:在窗口的状态栏是添加QLabel和QProgressBar组件,因为在UI可视化设计时不能再状态栏上放置任何组件。
1.窗口界面可视化设计
通过Action编辑器添加Action列表如图1-2所示,双击任意一个Action即可设置一些内容如图1-3所示
● Text:Action的显示文字。
● Object name:Action对象名称。
● ToolTip:当鼠标移动到菜单项或工具按钮上短暂停留时,在光标处显示的提示文本。
● Icon theme:图标主题。
● Icon:Action的图标。
● Checkable:Action是否可以被复选,如果勾选此复选框,那么该Action就有复选状态。
● Shortcut:Action的快捷键,将光标定位到旁边的编辑框里,按下需要设置的快捷键即可。
● Menu role:Action在菜单中的特定角色或功能的属性。
2.设计菜单栏和工具栏
QMainWindow类窗口上有菜单栏、工具栏、状态栏,这3种界面组件对应的类分别是QMenuBar、QToolBar、QStatusBar,他们都是直接从QWidget继承而来的。在可视化UI设计时,使用窗体的右键快捷菜单可以添加或删除菜单栏、工具栏、状态栏如图1-4。一个主窗口上最多一个菜单栏、一个状态栏,可以有多个工具栏 。
Add Tool Bar:添加一个工具栏
QToolBar类的主要特性如图1-5所示
属性名称 | 属性值类型 | 含义和作用 |
movable | bool | 工具栏是否可移动 |
allowedAreas | Qt::ToolBarAreas | 工具栏可以放置的窗口区域 |
orientation | Qt::Orientation | 工具栏的方向,有水平和垂直两种方向 |
iconSize | QSize | 图标大小,一般是16*16、24*24、32*32像素等大小 |
toolButtonStyle | Qt::ToolButtonStyle | 工具按钮样式 |
floatable | bool | 工具栏是否可浮动,如果值为true,工具栏可以被拖放出来作为一个浮动窗口 |
3.QAction类
1、QAction的信号
void | changed() | Action的text、toolTip、font等属性变化时 |
void | checkableChanged(bool checkable) | checkable属性值变化时 |
void | enabledChanged(bool enabled) | enabled属性值变化时 |
void | hovered() | 鼠标移动到此Action创建的菜单项或工具按钮时 |
void | toggled(bool checked) | checked属性值变化时 |
void | triggered(bool checked=false) | 点击用此Action创建的菜单项或工具按钮时 |
void | visibleChanged () | visible属性值发生改变时 |
2、QAction的公有槽
void | hover() | 触发hovered()信号 |
void | trigger() | 触发triggered()信号 |
void | resetEnabled() | 复位enabled属性为默认值 |
void | setChecked(bool) | 设置checked属性的值 |
void | setDisabled(bool) | 设置enabled属性的值,若b=true,设置enabled=false |
void | setEnabled(bool) | 设置enabled属性的值 |
void | setVisible(bool) | 设置visible属性的值 |
void | toggle() | 反转checked属性的值 |
4.代码编写
currentCharFormat(),获取到当前选中的文本的字符格式,并且返回一个QTextCharFormat对象,该对象包含了文本的字体、颜色、对齐方式、背景色、下划线等格式信息
fmt.font().bold()返回的是一个bool,表示选择文本是否加粗,然后通过setChecked()改变按钮的选中状态
QtextCharFormat类比较特殊,它有setFontItalic(),setFontUnderline()但是没有setFontBold,取而代之的是setFontWeight(QFont::Bold)
标签:QMain,工具栏,QAction,Window,bool,设计,Action,可视化,属性 From: https://blog.csdn.net/zhj18679130613/article/details/139908593