QT android开发中QMainWindow的背景图片设置
来源:互联网 发布:宁夏干部网络培训学校, 编辑:程序博客网 时间:2024/06/10 11:50
这几天,需要将一个Android应用的界面优化一下,需要将主界面加上一张背景图。
由于对QT本身的了解也不是很透彻,所以最初是使用的Baidu。在网上搜了一圈,无非就是使用
setStyleSheet("border-image:url(:xx/main_bg.jpg);");
或者:setStyleSheet("#MainWindow{border-image:url(:xx/main_bg.jpg);}");
的使用。但是尝试后发现,第一种方法,所有的子控件都显示了一张图片在背景上。第二种方法根本不能显示出来。
后来看了源代码,对于QMainWindow有一个图介绍:
The Main Window: +----------------------------------------------------------+ | Menu Bar | +----------------------------------------------------------+ | Tool Bar Area | | +--------------------------------------------------+ | | | Dock Window Area | | | | +------------------------------------------+ | | | | | | | | | | | Central Widget | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +------------------------------------------+ | | | | | | | +--------------------------------------------------+ | | | +----------------------------------------------------------+ | Status Bar | +----------------------------------------------------------+
上面是直接拷贝过来的,有点没有对齐。
也就是说:QMainWindow是自带一个Layout的,它的原始界面上,不仅仅是一个QWidget对象,还有其他的菜单、工具、状态栏等等分区。所以说,它虽然是从QWidget继承来的,但是它不止包含一个QWidget对象,倒像是一个QWidget的管理者。
而平常使用的QDialog倒是实实在在在QWidget的基础上增加了一些功能。
所以:QDialog使用上面的方式是可以实现单独显示背景图片的,而QMainWindow就不行。
这个在设计器上反应最为明显,当将
border-image:url(:xx/main_bg.jpg);改为:#MainWindow{border-image:url(:xx/main_bg.jpg);后点击应用,图片显示效果瞬间消失。
所以我们要想使用QWidget的setStyleSheet函数,必须是对于QWidget对象或者控件对象或者QDialog类的对象使用,而不能对于QMainWindow对象使用。不过QMainWindow提供了对于其包含的QWidget对象的访问,比如中心工作区域,就可以通过:QWidget *QMainWindow::centralWidget()访问到、对于menu区域使用:QWidget *QMainWindow::menuWidget() 。
所以对于工作区域的背景图片,我们就可以这样设置:centralWidget()->setStyleSheet("border-image:url(:plat/res/pic/main_bg.jpg);");这个可以设置成功,但是所有工作区域的子控件都会被影响。所以不能仅仅这样,还需要对其使用#符号进行限制。
最后代码如下:QWidget* workWgt = centralWidget();workWgt->setObjectName("wkWgt");//首先对这个对象设置名称workWgt->setStyleSheet("#wkWgt{border-image:url(:xx/main_bg.jpg);}");//对对应名称wkWgt 的对象进行设置背景图片操作目标达成!后来又测试了一下,其实在Android中不能实现的透明,在windows版本中,使用setStyleSheet("#MainWindow{border-image:url(:xx/main_bg.jpg);}");
完全就可以了,没有必要像上面所讲的一样。本文不过希望在Android的开发中,其他人不要像我一样浪费太多的时间。本文使用QT:5.4 或者 :5.8
阅读全文
0 0
- QT android开发中QMainWindow的背景图片设置
- Qt中QMainWindow对象设置layout的方法
- Qt中QMainWindow对象设置layout的方法
- Qt中按钮背景图片的切换设置
- QT中如何设置窗体的背景图片。
- QT中如何设置窗体的背景图片。
- QT中如何设置窗体的背景图片
- QT-QMainWindow布局设置
- QT中QMainWindow、QWidget、QDialog的区别
- QWebView中出现加载网页乱码、图片加载不出来的问题解决以级QMainWindow背景图片设置问题
- qt设置窗口的背景图片
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- qt中常用的一种设置背景图片方法
- 【SpringMVC】适配器
- C语言操作符简单介绍
- 7.0新特性新1
- 小算法-快速幂
- 5.12 应用举例(略)
- QT android开发中QMainWindow的背景图片设置
- 空格替换 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一
- pat b 1033 旧键盘打字
- java中的栈和堆以及常量池(一)
- sqlite学习笔记(4)使用TCL测试脚本
- RabbitMQ入门教程(六):路由选择Routing
- c语言操作符总结
- hibernate_day02_12_hibernate事务代码规范写法
- go语言中的value receiver和pointer receiver