8560|3

37

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

help2416的QT设计时样式表改背景图不生效问题 [复制链接]

本帖最后由 wowo8688 于 2015-4-11 13:25 编辑

本人qt工程里创建一个QWidget的模板,然后main.cpp用如下代码设置背景图片不显示,
        Form1 f;
        f.setStyleSheet("border-image: url(:/1234567/111.PNG);");
        f.show();
同样使用修改界面Form1.ui设计样式表增加的背景图片然后main.cpp用如下代码,运行也不显示
        Form1 f;
        f.show();
而main.cpp用如下代码设置背景图片就显示,
        QWidget q1;
        q1.setStyleSheet("border-image: url(:/1234567/111.PNG);");
        q1.show();
help2416开发板上qt显示和电脑端qt显示都是这样,这是c++类的原因还是QT软件框架原因,不明白下么是分析过程,给后来者参考

网上查阅的2个方法都可以,
        删除头文件中的 Q_OBJECT,自己测试setStyleSheet生效
        重载 paintEvent方法,自己测试setStyleSheet生效

网上查到的原因:
        setStyleSheet()该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图片!!
        http://blog.csdn.net/nrc_douningbo/article/details/5565212

最终确定是:setStyleSheet()函数原因,除了QWidget模板,使用QMainWindow 或 QDialog模板直接使用setStyleSheet都正常
但setStyleSheet()函数里是什么导致只能给带父的窗口改背景图,请高手解释下。



最新回复

[attach]194232[/attach][attach]194233[/attach][attach]194234[/attach]  详情 回复 发表于 2015-4-11 23:34
点赞 关注

回复
举报

17

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
本帖最后由 风间一叶 于 2015-4-11 23:23 编辑

重写paintEvent()事件肯定能实现你要的功能,setstylesheet这个你得研究源码去.一般人是不会这么做的
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

赞赏

1

查看全部赞赏

 
 
 

回复

37

帖子

0

TA的资源

一粒金砂(中级)

4
 
本帖最后由 wowo8688 于 2015-4-14 10:28 编辑

因为QMainWindow 建立的qt工程都有标题和菜单 即使隐藏标题栏还是有痕迹,所以只能用QWidget 或 QDialog
QDialog设置背景使用setstylesheet没问题,QWidget使用setstylesheet不能设置背景,现在用paintEvent()事件解决QWidget 不能设置背景问题。
问题1:这个过程是否哪里走弯路了?为了创建一个没有标题和菜单栏的窗口,有没有更简单的创建方法。




 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表