Qt-QMain Window和QAction

        QMain Window 是主窗口类,具有菜单栏、工具栏、状态栏等主窗口常见的界面元素。要设计主窗口上的菜单栏、工具栏、、按钮的下拉菜单、组件的快捷菜单等,需要用到QAction类。QAction对象就是实现某个功能的 “动作”,我们称其为Action。在UI可视化设计时,我们可以设计很多Action,然后用Action创建菜单选项和工具按钮。

        通过本节学习我设计了一个示例项目 2024_6_23_1 ,窗口基类选择QMainWindow,示例运行时如图1-1所示,这个示例实现的是一个简单的文本编辑器,窗口中间工作区是一个QPlain TextEdit 组件。

图1-1  示例2024_6_23_1 运行时界面​​​

本示例的设计和实现过程涉及较多技术点。

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所示

图1-2 Action编辑器

图1-3 编辑Action对话框​

●        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:添加一个工具栏

图1-4

        QToolBar类的主要特性如图1-5所示

图1-5
属性名称属性值类型含义和作用
movablebool工具栏是否可移动
allowedAreasQt::ToolBarAreas工具栏可以放置的窗口区域
orientationQt::Orientation工具栏的方向,有水平和垂直两种方向
iconSizeQSize图标大小,一般是16*16、24*24、32*32像素等大小
toolButtonStyleQt::ToolButtonStyle

工具按钮样式

floatablebool工具栏是否可浮动,如果值为true,工具栏可以被拖放出来作为一个浮动窗口

         

3.QAction类 

1、QAction的信号

voidchanged()Action的text、toolTip、font等属性变化时
voidcheckableChanged(bool checkable)checkable属性值变化时
voidenabledChanged(bool enabled)enabled属性值变化时
voidhovered()鼠标移动到此Action创建的菜单项或工具按钮时
voidtoggled(bool checked)checked属性值变化时
voidtriggered(bool checked=false)点击用此Action创建的菜单项或工具按钮时
voidvisibleChanged ()visible属性值发生改变时

  

 

 

 

 

 

2、QAction的公有槽

voidhover()

触发hovered()信号

voidtrigger()触发triggered()信号
voidresetEnabled()复位enabled属性为默认值
voidsetChecked(bool)设置checked属性的值
voidsetDisabled(bool)设置enabled属性的值,若b=true,设置enabled=false
voidsetEnabled(bool)设置enabled属性的值
voidsetVisible(bool)

设置visible属性的值

voidtoggle()反转checked属性的值

4.代码编写

        currentCharFormat(),获取到当前选中的文本的字符格式,并且返回一个QTextCharFormat对象,该对象包含了文本的字体、颜色、对齐方式、背景色、下划线等格式信息

        fmt.font().bold()返回的是一个bool,表示选择文本是否加粗,然后通过setChecked()改变按钮的选中状态 

QtextCharFormat类比较特殊,它有setFontItalic(),setFontUnderline()但是没有setFontBold,取而代之的是setFontWeight(QFont::Bold)

  • 30
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值