QWidget 直接派生类的样式表不起作用的解决办法
来源:互联网 发布:两游记配音软件 编辑:程序博客网 时间:2024/06/12 21:57
从 QWidget 派生一个窗口,使用 stylesheet 设置背景,designer 设置没有问题,或者,通过 setStyleSheet() 设置,代码操作是正确的,编译运行后,却没有背景。
下面为验证例子(通过代码验证,没有使用 designer ):
工程目录结构如下:
mywidget.h 示例代码如下:
#ifndef MYWIDGET_H#define MYWIDGET_H#include <QWidget>class MyWidget : public QWidget{ Q_OBJECTpublic: MyWidget(QWidget *parent = 0); ~MyWidget();};#endif // MYWIDGET_H
mywidget.cpp 示例代码如下:
#include "mywidget.h"MyWidget::MyWidget(QWidget *parent) : QWidget(parent){ // 通过样式表给窗口设置背景图 // "MyWidget" 为类名 // "../test/test.jpg": 为图片路径,相对于可执行程序的相对路径 this->setStyleSheet("MyWidget{background-image: url(../test/test.jpg);} ");}MyWidget::~MyWidget(){}
main.cpp 示例代码如下:
#include "mywidget.h"#include <QApplication>int main(int argc, char *argv[]){ QApplication a(argc, argv); MyWidget w; w.show(); return a.exec();}
编译运行后,窗口的背景图并没有设置成功:
原因是,QWidget 的 paintEvent() 是空的,而样式表要通过 paint 被绘制到窗口中,我们需要重新写 paintEvent() 函数,才能够真正实现继承。
解决办法如下:
mywidget.h 添加如下代码:
//.h文件// 增加 paintEvent() 的声明protected:void paintEvent(QPaintEvent *); //重写paintEvent()
mywidget.cpp 添加如下代码:
// .cpp 文件// 重写paintEvent()void MyWidget::paintEvent(QPaintEvent *){ QStyleOption opt; // 需要头文件#include <QStyleOption> opt.init(this); QPainter p(this); // 需要头文件#include <QPainter> style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);}
重新编译运行,发现背景图设置成功:
本教程示例代码下载请点此链接:http://download.csdn.net/detail/tennysonsky
参考资料:http://blog.csdn.net/dbzhang800
2 0
- QWidget 直接派生类的样式表不起作用的解决办法
- QWidget直接派生类的样式表不起作用
- 继承自QWidget的子类如何直接使用QSS样式
- 继承QWidget的派生类控件不能设置QSS问题解决
- 【框架-QT】隐藏QWidget及QWidget派生的类的外框
- QT 中继承QWidget之后,样式表不起作用 style stylesheet
- QWidget及其派生类
- 一个从QWidget派生的简单类通过setStyleSheet设置背景无效的问题
- QWidget 设置样式表
- el表达式不起作用的解决办法
- ListView的onItemClickListener不起作用解决办法
- ng-disabled 不起作用的解决办法
- ng-disabled 不起作用的解决办法
- ng-disabled 不起作用的解决办法
- Observable.interval()不起作用的解决办法
- 使用browserSync不起作用的解决办法
- CDC::SetBkColor函数在CView的派生类的OnCreate函数调用不起作用,不知为什么???
- 直接使用CRecordset,不使用CRecordset的派生类
- Python单元测试unittest加载方式之二:加载测试套件
- Linux 下更改 oracle 客户端字符集和服务端字符集
- Android之TextView的样式类Span的使用详解
- char到wchar的转换实质
- 奋斗者之歌
- QWidget 直接派生类的样式表不起作用的解决办法
- java文件读写和properties文件的读取
- 大页内存原理及使用设置
- 素数判断算法
- java、oracle、jsp中string与date与sql.date的转换
- nginx常用负载方式
- PCIE
- 第九章
- SQL Server 2008 Windows身份验证改为混合模式身份验证