发现 继承自QWidget的自定义类 ,使用setStyleSheet无效,

如果删除头文件中的 Q_OBJECT,setStyleSheet生效,

但不用OBJECT 就无法所使用signal and slot,

最后找到解决办法,继承自QWidget的自定义类中,重载 paintEvent方法,

并加入如下代码:

QStyleOption opt;
opt.init(this);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
QWidget::paintEvent(e);
set Object Name("LoginDlg"); set StyleSheet (QString(" QWidget #LoginDlg{border-image:url(:/new/prefix1/img/login.jpg);} 发现继承自 QWidget 自定义 类 ,使用 set StyleSheet 无效 解决 办法:继承 QWidget 自定义 ,需要重载 paintEvent 方法 。 qss=''' #MyCentralWidget{ border-image: url("img/background.jpg"); margin:0px; padding:0px; QtAwesome启用PyQt和PySide应用程序 的图标字体,例如Font Awesome和Elusive Icons。 它最初是Rick Blommers的 C ++库的Python端口。 使用conda : conda install qtawesome 或使用pip (仅当您未安装conda时): pip install qtawesome 支持的字体 QtAwesome通过其前缀和图标名称来标识图标,并用句点( . )字符分隔。 当前可以使用以下前缀: FA 5.9.0提供1,534个不同样式的免费图标: fa5前缀具有151个“常规”样式的图标。 fa5s前缀具有935个“纯色”样式的图标。 fa5b前缀有413个各种品牌的图标。 fa是传统FA 发现 继承自 QWidget 自定义 类 ,使用 set StyleSheet 无效 , 如果删除头文件 的 Q_ OBJECT set StyleSheet 生效, 但不用 OBJECT 就无法所使用signal and slot, 最后找到 解决 办法,继承自 QWidget 自定义 ,重载 paintEvent 方法 , 并加入如下代码: QStyleOption opt; opt.init(this); QStandardItemModel *model = new QStandardItemModel(ui->listView); ui->listView-> set Model(model); for(int i = 0; i < 5; i++) { QStandardItem *item = new QStandardItem(QString::number(i) opt.initForm(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this) 需要创建一个继承自 QWidget 的类来设计自己的 窗口 ,使用 set StyleSheet 无疑能方便快捷地配置 窗口 的一些风格,但是在应用继承自基类的 set StyleSheet 方法 时发现,设置的style sheet并不能在最终的页面上生效,查阅了官方文档之后发现只需要在派生类 重写一下paintEvent 方法 。例如:我创建一个继承 QWidget 的selfWidget的 类,该 类没有ui文件,然后在mainWindow函数里对selfWidget进行 set StyleSheet 发现 无效 方法 时就可以生效了。 然而写在 自定义 类LNTextEdit 构造函数的这句 set stylesheet ,是被上图这句 set stylesheet 给覆盖了,因为是写在了构造函数 ,先执行了构造函数,再执行下面的这句 set stylesheet 。最右方的返回红色按钮其实是可以点击的 ,也就是说确实该动过ui文件 textedit的 stylesheet 属性,导致在自动生成 ui-> set upUi(this);这样就能保证不在 set upui 方法 ,自动设置 stylesheet 了,也保证了在 自定义 set stylesheet 不被覆盖了。 今天一个同学遇到了一个问题,是这样的:她写了一个继承QLabel的派生类,重写了里面的paintEvent函数,创建对象并 set 了图片进去,编译没错,正常运行,结果就是那个label什么都没有显示出来.