Qt creator中操作QAction加入QToolBar

2023-05-16

背景:

个人笔记。

我之前没有系统化学习过任何资料,使用很多工具都是按需出发,直接上手,遇到问题再研究的。所以会有一些弯路。本文言语中难免有对个人情绪的生动描述,希望不要影响读者心情,这只是我学习过程的真实写照。

早先接手的项目中用到了QToolBar和QAction,一直用现成的,直到一次和同事讨论qss,在Creator中操作示例,才发现这叫一个难用。好不夸张说,多次尝试和对比才发现了玄机。

网上搜出来都是说如何new,如何addWidget,addAction之类,对于我没有意义。界面设计如果还不是可视化的,非要运行才能看效果,这不是我想要的。

当然我做的项目中,用到了用户功能权限的动态控制,用代码控制当然可以,但这不符合界面设计逻辑。

因此特别写下来记录。下面都是在creator中说明,不需要写代码,纯可视化实现。

QToolBar:

首先在creator中打开一个QMainWindow。可以看到右边“对象管理器”中的部件层级。

有点像MFC项目中的范例,它会默认带菜单栏,工具栏,状态栏。可以用鼠标在对象管理器中右键移除,也可以直接在窗体相应位置右键移除。

如果要添加,就在对象管理器根节点“MainWindow”上右键选择添加即可。

吐槽:

它就不能设计成统一风格?既然是部件,都从工具箱选择多好?纯个人习惯,我就感觉它不爽。想必qt这么设计有它的用意。

还有,我试过,通过提升为加上部件嵌套的方式,让MainWindow里再嵌套一个MainWindow,里面那个就不显示了。我没有深究为什么。一般也不这样用。主要是我同事提了一个需求,他希望改变工具栏层级,比如让它出现在其它部件的里面。

但qt的套路,我现在的理解是,工具栏不是普通部件,它只能属于MainWindow,因此它不能像其它部件那样随意安排位置。因为我暂时用不到,暂且搁置不深究了。有兴趣的朋友,咱们评论区详聊。

关于creator中的其它子窗体:

玩过vs的应该知道,IDE中的各种子窗体都可以随意改变位置和关闭,根据需要再显示。比如工具箱、对象管理器、资源管理器、解决方案管理器、类视图、调试窗口等。

qt里面貌似很多都是死的,就如下面这样:

像工具箱、对象管理器、属性管理器、下面的Action Editer等,可以拖拽改变位置,但没有右上角一个小叉。这些无伤大雅,也算各有风格。需要适应一下。此刻请记住这个图片,一会儿提到。

QAction:

使用上面的方法,为窗体添加一个工具栏。

添加后,会多出上图红色部分。此刻它就是个空容器,卵用没有。

然后看下面的Action Editer。是可以添加QAction,但跟界面没任何关系。

上图蓝框部分没有对钩,即使在右边属性那里有enabled值为true,这里也不行。如果第一次接触这里,能烦死。

此刻留意右上方的对象管理器:

尽管下面添加了几个QAction,但是他们跟QToolBar没产生联系。qt的意思是,QAction是个特殊零件,刚才只是管理这些零件,回头还得跟QToolBar连接才行。也就是代码里的addAction和addWidget。

这个时候用鼠标从Action Editer里面,把这些action拖拽到窗体上:

上图篮圈的部分有变化。拖拽的时候,在窗体那个很窄的工具栏上会有一个红色的依附指示,就好像窗体布局一样,然后它就上去了。

上图中,能看到action已经放入工具栏,对象管理器中,QToolBar下面也有了一个节点。这才算连接成功了。再看下面action editer那里,“使用”那一列,才有了对钩。在上面右键的话,也多了一个选项“用于”。

至此,添加QAction完成。在action editer那里的action上面鼠标右键可以转到槽函数,剩下就都知道了。

结束语:

用惯了vs,甚至pb,delphi,还没见过那个界面设计器是这样的。

虽然qt信号槽的方式让我眼前一亮,可以说与“消息事件响应机制”有个明显区别,至少对于我来说也算标新立异,我觉得非常好,用于各种通信太方便了。

但是qt creator刚接触时,太上头了。它对控件的布局也是不同于vs,但是用习惯了还挺好。但是像工具栏、菜单栏、项等,也许它有灵活的用法,但我个人感觉它设计的有些草率了。既然都是部件,都从工具箱开始不好吗?非要搞特殊。

总的来说,相比vc6.0还是友好了许多,也许跟我年龄增长有关。刚毕业那会儿,第一个工作就是让用vc++,其实做下去挺好的。但是当时一看,太上头,因为自己之前尝试用过,如果没人引导,纯自己看书的话,短时间内不好上手。相比vb、pb、delphi要难用。但如果能坚持下来,对程序结构理解会好很多。

总之,qt还是很好用的。纯英文的帮助和社区交流,还是挺好玩的,对学习英语很有帮助。现在的学习环境,比二十年前强太多了。网络昂贵的时代,学东西真费劲,原本很多稍微点拨就开窍的东西,如果自己闷头上,费劲大发了。

像上面提到的qt种种,也许直接先阅读一本综合教材,会少走不少弯路。但是,纯理论学习也要结合实践。或者像我一样,没怎么系统化看过资料,上来就直接用,在不断发现问题的时候再尝试解决,也是一种学习途径。哪种更好就看个人了。

所以,善于在网络分享,贡献自己一份力,会让更多学习者少走弯路。

完结。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt creator中操作QAction加入QToolBar 的相关文章

  • Qt Creator报错无法引用某个库函数的问题

    target link libraries detector nvinfer nvinfer plugin nvparsers OpenCV LIBS 34 stdc 43 43 fs 34 今天编译一个开源库 xff0c 用cmake构建
  • Qt creator中操作QAction加入QToolBar

    背景 xff1a 个人笔记 我之前没有系统化学习过任何资料 xff0c 使用很多工具都是按需出发 xff0c 直接上手 xff0c 遇到问题再研究的 所以会有一些弯路 本文言语中难免有对个人情绪的生动描述 xff0c 希望不要影响读者心情
  • Qt/Qt Creator下载网址

    1 所有Qt版本下载地址 xff1a http download qt io archive qt 2 所有Qt Creator下载地址 xff1a http download qt io archive qtcreator 3 所有Qt
  • Qt Creator中配置Opencascade

    Qt Creator中配置Opencascade 前言 xff1a 由于项目需要使用到STEP STP文件 xff0c 还需要三维建模 xff0c 于是就发现了一个工具 目前网上的资源 xff0c 专门分享这方面内容的是eryar大佬 xf
  • Qt Creator 与Python混合编程配置

    第一步 创建Qt工程 第二步 在项目 pro文件下添加python解释器安装路径 添加代码如下 xff0c 大家可复制后更改python版本以及安装路径 INCLUDEPATH 43 61 C Python include LIBS 43
  • Qt Creator闪退解决办法

    Qt Creator闪退解决办法 Qt 今天突然出现所有插件无法打开的问题 xff0c 找了很久的资料也没解决 只能重装QtCreator 结果一点开QtCreator过不了一分钟 xff0c 就闪退 看到windows记录的问题原因是Qt
  • 教你彻底搞懂Cocos Creator Tween

    Cocos 使用了Tween来代替原来的Action系统 今天来给大家讲解Tween如何使用 帮助大家掌握Tween的使用 xff0c 并且对Tween有一个更深入的了解 这里有个cocos creator学习交流点击可以直接进入 1 Tw
  • Ubuntu下QT creator查看pixhawk工程

    打开Terminal span class hljs built in cd span src Firmware mkdir Firmware build span class hljs built in cd span Firmware
  • Qt Creator 无法编辑Qml界面,报错:“Qt Quick emulation layer crashed”

    今日在Qml界面编辑中 xff0c 突然无法使用设计师编辑器 xff0c 并报错如图 xff1a 代码定位也无法定位到错误的位置处 xff0c 通过注释代码的方式检查后 xff0c 发现错误产生原因是某个部件设置了两个状态State xff
  • cocos creator新缓动系统-cc.tween

    前言 一直对于cocos creator的action系统有着深深的埋怨 xff0c 原因是用起来太麻烦了 习惯了Unity的Tween插件的用法 xff0c 我也试着自己封装了下action系统 xff0c 用起来像Tween那样 xff
  • 从零开始编写一个上位机(串口助手)QT Creator + C++

    提示 xff1a 本博客作为学习笔记 xff0c 有错误的地方希望指正 xff0c 此文可能会比较长 xff0c 作为学习笔记的积累 xff0c 希望对来着有帮助 绪论 xff1a 笔者这里使用的是QTCreator和C 43 43 来实现
  • docker里面安装Qt Creator

    sudo apt get install qt5 default qtcreator
  • Qt Creator使用CMake配置第三方库

    语法 include directories 添加第三方库头文件路径 这里的 include directories 直接向括号里加入第三方库的头文件路径即可 span class token function include direct
  • Cocos Creator 华容道

    环境 cocos creator 2 0 10 Mac环境 TypeScript 文末附源码链接 本文提供了游戏玩法的逻辑 支持关卡配置 可以自由配置关卡 先看一下效果 首先 我们看一下我们要处理的问题 1 区域划分 2 角色摆放 即 关卡
  • Qt中的主窗口QMainWindow

    GUI应用程序都有一个主窗口 虽然前面讲到的QWidget组件也可以定义生成主窗口 但是Qt还定义了一个专门用于实现主窗口的类QMainWindow 为什么 跟QDialog一样的道理 主窗口具有许多主窗口特有的元素组件 为了程序的复用性
  • CocosCreator TypeScript使用protobuf

    开发环境 Mac环境 CocosCreator TypeScript 使用protobuf 准备工作 1 CocosCreator 2 WebStorm VSCode 3 安装node js 4 下载protobufjs6 8 6 命令行安
  • cocoscreator 3.x 获取像素颜色

    const pos v2 世界坐标 const color as camera rt targetTexture readPixels pos v2 x pos v2 y 1 1 获得颜色 cc color color as 0 color
  • 为什么 PyQt 执行我的操作三次?

    我对 PyQt 还是个新手 但我真的不知道为什么会发生这种情况 我有一个像这样创建的主窗口 class MainWindow QtGui QMainWindow initialize def init self Call parent co
  • QMenu 中 QActions 的 QTooltip

    我希望能够显示工具提示QMenu items QActions 我取得的最好成绩是连接悬停信号QAction to a QTooltip show connect action QAction hovered QToolTip showTe
  • 无法隐藏 QMenu 对象 QMenu::setVisible()?

    我已经建立了一个QMenu MainMenu在我的上面MainWindow在我的应用程序中 大家都习惯了 我有以下QMenu主菜单 文件 编辑 SuperHeavyExpertMenus 设置 帮助 我想隐藏子树SuperHeaverExp

随机推荐

  • 企业级数据模型主题域模型划分( IBM-FSDM)

    一 前言 如何构建主题域模型原则是构建企业级数据仓库重要的议题 xff0c 最好的路径就是参照成熟的体系 IBM金融数据模型数据存储模型FSDM xff0c 是金融行业应用极为广泛的数据模型 xff0c 可以作为我们构建企业级数据仓库主题域
  • 关于编程学习上的一些感悟——不忘初心

    序 今天无意中看到以前一起开发过的同学写的技术文章 xff0c 了解到了更多在blog和github以及一些技术交流论坛上面非常活跃 回过头来看看自己 xff0c 好像依然停留在以前的样子 xff0c 似乎与真正在踏实学技术差距好像很大了
  • CentOS下ns-3安装教程

    首先 xff0c 安装ns 3时最好不要使用root权限 xff0c 普通用户安装即可 xff0c 否则后来要找文件会比较麻烦 一 安装依赖软件包 首先安装依赖软件包 根据官网 xff08 https www nsnam org wiki
  • 生产者-消费者模型

    文章来自https github com NieJianJian AndroidNotes xff0c 内容将持续更新 xff0c 欢迎star 一 前言 生产者消费者模式并不是GOF提出的23种设计模式之一 xff0c 23种设计模式都是
  • JAVA 多线程解决高并发、超时线程池耗尽问题

    第一类 问题 项目中遇到了 创建20个固定线程的线程池 在测试环境 多线程如果高并发的调用都没出现问题 但是在实际的项目中 出现了线程池内线程超时等待并将池内的线程耗尽 导致其它的程序走到多线程调用时候出现了执行慢 线程无法执行问题 问题原
  • 31_谈谈你对线程安全的理解?(重点)

    如果这个是面试官直接问你的问题 xff0c 你会怎么回答 xff1f 一个专业的描述是 xff0c 当多个线程访问一个对象时 xff0c 如果不用进行额外的同步控制或其他的协调操作 xff0c 调用这个对象的行为都可以获得正确的结果 xff
  • MariaDB 数据类型

    MariaDB 数据类型 数字数据类型 MariaDB支持的数字数据类型如下 类型描述TINYINT此数据类型表示落入 128到127的有符号范围内的小整数 xff0c 以及0到255的无符号范围 BOOLEAN此数据类型将值0与 fals
  • DBSCAN算法(python代码实现)

    DBSCAN 上次学了kmeans基于划分的方法 xff0c 这次学一个基于密度的聚类算法 xff1a DBSCAN xff08 Density Based Spatial Clustering of Applications with N
  • vs2022(缺少MFC,无法新建项目,控件无法添加事件)的解决

    最近下载安装了最新的vs2022社区版 xff0c 想着把之前的c 43 43 项目能够兼容 xff0c 于是遇到了一些列问题 缺少MFC xff0c 无法新建项目 xff0c 控件无法添加事件 这里首先要吐槽一下 xff1a 也许是我电脑
  • C#多线程加载控件界面卡死的解决

    先听一个故事 xff1a 有一个老板忙不过来 xff0c 于是招一个员工去负责某些事务 这样老板就可以腾出时间处理其它事 后来发现员工干不下去 xff0c 原因是干活需要花费 xff0c 没有老板的认可 xff0c 财务不给批钱 这是原则
  • vs2022账户无法登录的解决

    因为昨天重做系统 xff0c 重装了vs2022 xff0c 又涉及到登录的问题 xff0c 一时想不起来之前怎么解决的了 xff0c 想起来以后决定还是记录下来 我遇到的问题是下面这样的 xff0c 提示脚本错误 xff0c 要求升级最新
  • 使用centos7+bind9构建内网私有dns

    有这样一种场景 xff0c 局域网内有一个为网内用户提供服务的机器 xff0c 我们希望像访问互联网站点一样去访问它 xff0c 而不用记忆ip地址和端口 xff0c 比如在web浏览器地址栏输入http www nx com就可以访问它
  • PowerBuilder制作纸牌游戏

    本文记录的是2001年我大三那年假期制作小游戏的思路 xff0c 希望给在读计算机专业的朋友们一些参考 xff0c 如果还没来得及动手尝试的同学 xff0c 一定要勇于动手 你们一定比我做得更好 制作动力 xff1a 我有一个好朋友 xff
  • 【Qt线程-1】this,volatile,exec(),moveToThread()

    背景 xff1a 个人学习多线程控制 xff0c 写了一些博文用于记录 xff1a Qt线程 2 事件循环 xff08 QCoreApplication processEvents xff0c exec xff09 的应用 Qt线程 3 使
  • 【Qt线程-2】事件循环(QCoreApplication::processEvents,exec)的应用

    背景 xff1a 个人学习多线程控制 xff0c 写了一些博文用于记录 Qt线程 1 this xff0c volatile xff0c exec xff0c moveToThread Qt线程 3 使用事件循环 xff0c 信号 xff0
  • 【Qt线程-4】事件循环嵌套,BlockingQueuedConnection与QWaitCondition比较

    背景 xff1a 个人学习多线程控制 xff0c 写了一些博文用于记录 xff1a Qt线程 1 this xff0c volatile xff0c exec xff0c moveToThread Qt线程 2 事件循环 xff08 QCo
  • 【Qt样式(qss)-3】几套配色方案

    背景 xff1a 之前写过有关qss的博客 xff0c 记录了如何使用qt手册 xff0c 以及在项目中如何使用qss的体验 经过实践 xff0c 我归纳了自己需要的qss使用方法 xff0c 使之尽量高效 xff0c 容易维护 Qt样式
  • 【Qt样式(qss)-4】应用到QMdiArea不生效的解决

    背景 xff1a 之前写记录过几篇qss相关内容 xff1a Qt样式 xff08 qss xff09 1 手册小结 xff08 附例 xff1a 软件深色模式 xff09 Qt样式 xff08 qss xff09 2 使用小结 xff08
  • Google play billing(Google play 内支付) 下篇

    开篇 xff1a 如billing开发文档所说 xff0c 要在你的应用中实现In app Billing只需要完成以下几步就可以了 第一 把你上篇下载的AIDL文件添加到你的工程里 xff0c 第二 把 lt uses permissio
  • Qt creator中操作QAction加入QToolBar

    背景 xff1a 个人笔记 我之前没有系统化学习过任何资料 xff0c 使用很多工具都是按需出发 xff0c 直接上手 xff0c 遇到问题再研究的 所以会有一些弯路 本文言语中难免有对个人情绪的生动描述 xff0c 希望不要影响读者心情