首页 > 其他分享 >Qt-QMain Window和QAction

Qt-QMain Window和QAction

时间:2024-06-24 11:01:11浏览次数:22  
标签:QMain 工具栏 QAction Window bool 设计 Action 可视化 属性

        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)

标签:QMain,工具栏,QAction,Window,bool,设计,Action,可视化,属性
From: https://blog.csdn.net/zhj18679130613/article/details/139908593

相关文章

  • 高级DISM命令,你可以进行全面且深入的Windows映像维护和修复,确保系统的稳定性和性能;DIS
    修复Windows映像通常涉及使用DISM(DeploymentImageServicingandManagement)命令。以下是一个初级的大纲,帮助你理解如何使用DISM命令进行映像修复:1.检查映像健康状态使用DISM命令可以检查和修复损坏的Windows映像文件。以下是一些常用的DISM命令:检查映像健......
  • 域渗透学习(一)Windows认证机制
    windows认证机制何谓域渗透,域渗透就是基于windows域环境的渗透,而域渗透涉及到的技术,如哈希传递(PTH)票抵传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解windows认证机制的原因之一。windows的认证包括三个部分,用户直接操作计算机登录账号(本地认证),远程连......
  • 在Windows环境中,如果你希望禁用通过Win+R快捷键运行命令提示符(cmd),可以采取以下方法。
    在Windows环境中,如果你希望禁用通过Win+R快捷键运行命令提示符(cmd),可以采取以下方法。这些方法包括组策略编辑器和注册表编辑器,但请注意,修改系统设置可能会影响系统的其他功能,应谨慎操作。方法1:使用组策略编辑器打开组策略编辑器:按 Win+R,输入 gpedit.msc,然后按回车。......
  • 了解如何使用DIR命令来查看和管理文件系统中的文件和目录;更加灵活地利用 DIR 命令来筛
    应用大纲:初级使用方法1.基本用法使用 DIR 命令来列出当前目录中的所有文件和子目录。2.切换到不同目录使用 DIR[驱动器:][路径] 来列出指定目录中的文件和子目录。例如,DIRC:\Users。3.常用选项/P:分页显示结果,每页一屏。/W:宽列表格式显示,减少详细信息。/A:按......
  • Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用
     原文链接:http://cshelloworld.com/home/detail/1804473083243925504当我们点击win10系统搜索框的时候,输入名称,win10会帮助我们匹配到对应的应用。这里搜索框实际上就是windows系统的开始菜单。接下来我们随便找一个应用,右键,然后点击打开文件位置,我们来看下这个EveryThing的......
  • windows服务器上用nginx转发到iis中的网站
    windows服务器上用nginx转发到iis中的网站2024年6月23日测试通过前提:华为云1核心2G内存1M带宽服务器¥40/年,还没有备案,80端口用不了,在安全组里把81端口打开了,同时记得登录云服务器里把WINDOWS的防火墙关闭或者放行81端口想法:windows服务器里下载nginxwindows版本,然后所有请求......
  • 当Windows台式电脑或笔记本电脑随机关机时,请先从这8个方面检查
    序言你的Windows笔记本电脑或PC是否意外关闭?笔记本电脑电池故障、电源线松动、过热、电源设置错误、驱动程序过时或电脑组件故障等问题都可能是罪魁祸首。如果你对这个问题感到沮丧,试试这些解决方案。进行一些初步检查与从电池中获取电力的笔记本电脑不同,台式电脑依靠与外部......
  • 玄机——第五章 Windows 实战-evtx 文件分析 wp
    文章目录一、前言二、概览简化三、参考文章四、步骤(解析)步骤#11.将黑客成功登录系统所使用的IP地址作为Flag值提交;拓展1.1步骤#22.黑客成功登录系统后修改了登录用户的用户名,将修改后的用户名作为Flag值提交;拓展1.2拓展1.3步骤#33.黑客成功登录系统后成功访问了一个......
  • CrossOver 24 for Mac(windows 虚拟机)
    CrossOverforMac是一款功能强大的虚拟机软件,允许在Mac系统上运行Windows应用程序而无需重新启动计算机。通过CrossOver,用户可以轻松地运行Windows软件和游戏,而无需购买Windows许可证或使用虚拟机。CrossOver通过直接在Mac系统上提供所需的Windows资源,实现了无缝的跨平台兼容......
  • Windows系统分区
    系统分区一,选择分区表1,MBR(主引导记录)分区表;缺陷:最大支持2.1TB的硬盘;最大支持4个主分区。分区分类:①主分区:每块硬盘最多4个②扩展分区:每块硬盘最多1个,扩展分区+主分区最多4个,扩展分区不能格式化,不能写入数据扩展分区只能用于包含更多的逻辑分区③逻辑分区:逻辑分区......