当前位置: 首页 > news >正文

QT使用promoted后样式(setStyleSheet)不生效问题解决

1.理解promoted(提升)在 Qt 中的概念

在 Qt Designer 中,“提升(Promoted)” 是一种机制,它允许你使用自定义的部件类来替代标准的 Qt 部件类。这在你已经创建了一个从标准 Qt 部件(如QListWidget)派生的自定义部件(如ListMenu)并且希望在设计器环境中使用它时非常有用。

2.样式不生效的可能原因及解决方法

原因:当你在 Qt Designer 中提升一个部件后,部件的初始化顺序可能会导致样式表加载出现问题。在某些情况下,Qt Designer 可能会在自定义部件的构造函数(其中设置了样式表)之前就对部件进行了一些默认的初始化操作,从而覆盖了样式表的设置。

解决方法:可以尝试在自定义部件类中提供一个公共函数来设置样式表,然后在使用该部件的地方(例如包含这个提升部件的窗口类的构造函数)手动调用这个函数。例如,在ListMenu类中添加一个setupStyle函数:

1.头文件

#ifndef LISTMENU_H
#define LISTMENU_H#include <QListWidget>class ListMenu : public QListWidget
{Q_OBJECT
public:ListMenu(QWidget *parent = nullptr);void setupStyle();  // 用于设置样式表的函数
};#endif // LISTMENU_H

2.CPP文件 

#include "ListMenu.h"ListMenu::ListMenu(QWidget *parent) : QListWidget(parent)
{setupStyle();
}void ListMenu::setupStyle()
{// 设置整体列表的背景颜色、边框等样式this->setStyleSheet("QListWidget{""background-color: #f0f0f0;""border: 1px solid gray;""}"// 设置列表项的样式,比如文字颜色、背景色、悬停效果等"QListWidget::item{""color: #333333;""padding: 5px;""}""QListWidget::item:hover{""background-color: #cccccc;""}");
}

3.在外部调用 setupStyle函数

       - 然后在包含`ListMenu`的窗口类(假设为`MainWindow`)的构造函数中调用这个函数:```cppMainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){// 假设ui是通过Qt Designer生成的界面类ui->setupUi(this);ListMenu *listMenu = qobject_cast<ListMenu *>(ui->promotedListMenu);if (listMenu){listMenu->setupStyle();}}

http://www.lryc.cn/news/505672.html

相关文章:

  • Vue3有哪些好用的处理大数据量虚拟表格组件呢?
  • Java学习教程,从入门到精通,Java LinkedList(链表)语法知识点及案例代码(62)
  • 设计模式——Singleton(单例)设计模式
  • 深入理解 CSS 文本换行: overflow-wrap 和 word-break
  • Java-27 深入浅出 Spring - 实现简易Ioc-03 在上节的业务下手动实现IoC
  • kubernetes学习-使用metrics-server监控集群资源和查看日志
  • 解决 Git Permission denied 问题
  • CCNP_SEC_ASA 第三天作业
  • TypeError: Cannot read properties of null (reading ‘ce‘)
  • AdminJS - 集成 MySQL 的现代化管理面板开发指南
  • 上传文件(vue3)
  • 【Win10 环境vscode配置boost】
  • 中间件 redis安装
  • [java] 简单的熔断器scala语言案例
  • 【java】序列化的种类和使用场景
  • Qt5与Qt6中的高DPI缩放属性解析
  • Mac使用总结
  • 【日期规则】EXCEl 自定义日期匹配规则,学习基础知识,自由匹配场景
  • 苹果电脑可以安装windows操作系统吗?Mac OS X/OS X/macOS傻傻分不清?macOS系统的Java支持?什么是macOS的五大API法王?
  • 芋道SpringBoot配置Maven、创建SpringBoot项目、创建Web接口、读取配置信息
  • 物理机内网穿透
  • Vue 3: 通过图片链接获取图片颜色,间接设置背景颜色
  • opencv-python的简单练习
  • 如何使用生成式AI实现跨领域内容生成
  • 【Linux】socket编程1
  • Linux文件属性 --- 七种文件类型---文件.目录、软硬链接、字符设备文件
  • Tree-of-Counterfactual Prompting for Zero-Shot Stance Detection
  • NextJs 路由管理
  • hive 小文件分析
  • 【JavaWeb后端学习笔记】WebSocket通信