qt QPalette的原理与使用

这篇具有很好参考价值的文章主要介绍了qt QPalette的原理与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QPalette类用于控制控件的风格,即任意一个地方的绘制方式。每个控件或者说qwidget对象内部都有一个QPalette对象。

在paintEvent(QPaintEvent *event)函数中,其实就是调用该控件的QPalette内容来进行绘制的了。

例如:

QStyleOptionTab opt;

opt.palette.setColor(QPalette::Button, mColors[wid]);

painter.drawControl(QStyle::CE_TabBarTabShape, opt);

调色板QPalette类包含了部件各种状态的颜色组(ColorGroup)以及颜色角色(ColorRole)两个属性。

颜色组:一个调色板包含3种状态:激活(Active),失效(Disabled)和非激活(Inactive)。Qt中的所有部件都包含一个调色板,并且使用各自的调色板来绘制它们自身,这样可以使用户界面更容易配置,也更容易保持一致。

颜色角色:用来指定该颜色所起的作用,如背景颜色或者是文本颜色等,主要的颜色角色如表所列。

qt QPalette的原理与使用,qt,开发语言,qt调色板

只要分别设置好了这两方面,那么该控件的绘制风格颜色也就确定了。

注:QPalette::Base一般也用作背景色。具体不知道一个控件哪部分属于什么角色,就在设计师界面中,选中mainwindow,属性表格中设置palette,改变调色板,自己每个颜色调整一下,看看效果就知道了。

此外,这个palette默认是子对象继承父对象的,即只要mainwindow设置了比如palette中背景色为黑色,文本颜色为白色,那么整个软件都是这种风格了,这也就是软件实现多个风格切换设置的原理。此外,qt提供了一些风格可以选择,fusion,windows,winxp,等等,可以直接用的。

参考博客:Qt-风格化_qt setstyle_Half-up的博客-CSDN博客

注:QTabBar的背景色设置中,其角色为QPalette::Button。

所以,想要实现qtabwidget的每个标签页显示不同的背景色,因为该控件乃至它的子控件QTabBar都没有提供修改标签页背景色的接口(因为QTabBar是一个widget,但是它的每个标签页却不是,而是直接画出来的,所以没有接口),所以需要我们在QTabBar的paintEvent函数里自己去画出来。关于这个可以参考这个博客:c++ - Qt TabWidget Each tab Title Background Color - Stack Overflow

这里需要注意的是,需要明确设置该tabbar控件的风格为fusion,才能生效,如下:

setStyle(QStyleFactory::create("fusion"));    文章来源地址https://www.toymoban.com/news/detail-643916.html

到了这里,关于qt QPalette的原理与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【OpenCV实现鼠标绘图,轨迹栏做调色板,图像的基本操作】

    在OpenCV中操作鼠标事件 函数:cv.setMouseCallback() 目的是在鼠标双击的地方画一个圆。首先,我们需要创建一个鼠标回调函数,该函数会在鼠标事件发生时执行。鼠标事件包括左键按下、左键松开、左键双击等等。通过获取每个鼠标事件的坐标(x, y),我们就能实现画圆的功能。

    2024年02月05日
    浏览(65)
  • 用滑动条做调色板---cv2.getTrackbarPos(),cv2.creatTrackbar()

    cv.createTrackbar(‘R’, ‘image’, 0, 255, nothing) 参数:哪个滑动轨迹栏,哪个窗口,最小值,最大值,回调函数 cv.getTrackbarPos(‘R’, ‘image’) 参数:轨迹栏名,窗口名

    2024年02月09日
    浏览(58)
  • qt QPalette的原理与使用

    QPalette类用于控制控件的风格,即任意一个地方的绘制方式。每个控件或者说qwidget对象内部都有一个QPalette对象。 在paintEvent(QPaintEvent *event)函数中,其实就是调用该控件的QPalette内容来进行绘制的了。 例如: QStyleOptionTab opt; opt.palette.setColor(QPalette::Button, mColors[wid]); painter.dra

    2024年02月13日
    浏览(43)
  • QT中怎么使用QPalette设置按钮控件背景色

    💂 个人主页:pp不会算法 v 🤟 版权: 本文由【pp不会算法 v 】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 关于以上代码:并没有实现设置按钮控件的背景色 但是参照QT的帮助文档: 照上面这么讲确实应该可

    2024年02月11日
    浏览(48)
  • 十三、QPalette的简单使用(Qt5 GUI系列)

    目录 一、设计需求 二、实现代码 三、代码解析 四、总结         在实际应用中,经常需要改变某个控件的颜色外观,如背景、文字颜色等。Qt提供的调色板类 QPalette 专门用于管理对话框的外观显示。QPalette 类相当于对话框或是控件的调色板,它管理着控件或窗体的所有

    2024年01月17日
    浏览(55)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(77)
  • 【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。 战略目标:干掉它。 战术路线:Qt 绘图可以使用 Qt Charts,先了解

    2024年02月11日
    浏览(52)
  • 【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月15日
    浏览(70)
  • 【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 我要使用的功能比较简单,主要包含扫描串口、打开串口、发送数据、接收数据、暂停按钮、停止按钮,因此接下里将围绕这几个功能依次更新。 我的工程项目名字叫 “GUI”。

    2024年02月11日
    浏览(71)
  • 【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 这个 Bug 是我做这个工程时遇到的:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。 使用 C++ 语言,配合 Qt 开发串口通信界面,在添加 Widget 做

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包