发现 继承自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什么都没有显示出来.