Qt设置窗体背景
来源:互联网 发布:健身教材 知乎 编辑:程序博客网 时间:2024/06/07 04:42
- 简述
- 实现方式
- SetPalette设置背景
- 源码
- QSS设置背景
- 附加问题
- QPainter来绘制
- 扩展
简述
QWidget默认是白色的背景,在实际的应用中我们经常为它设置好看的背景图片来达到
美化软件的效果。
实现方式
- 通过SetPalette来设置背景图片
- QSS
- QPainter来绘制
SetPalette设置背景
源码
setAutoFillBackground(true);QPixmap pixmap(":/bj");QPalette palette;palette.setBrush(QPalette::Window, QBrush(pixmap));setPalette(palette);resize(pixmap.size());
QSS设置背景
setStyleSheet("border-image:url(:/bj);");
附加问题
如果你的控件是继承自QWidget的,会出现setStyleSheet没有效果。这是由于QWidget的
painterEvent函数是空的原因,你需要自己添加函数或者是控件继承QFrame。
void paintEvent(QPaintEvent *){ QStyleOption opt; opt.init(this); QPainter p(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);}
QPainter来绘制
通过painterEvent函数将背景图片绘制到控件的区域。
void Widget::paintEvent(QPaintEvent *event){ Q_UNUSED(event); QPainter painter(this); painter.setPen(Qt::NoPen); painter.drawPixmap(rect(), QPixmap(":/bj"));}
扩展
通过QPainter的绘制图片,我们可以通过一个局部变量来保存背景图片得路径,每次设置
图片后update(),就可重新绘制背景图片。
void Widget::setPixmapName(const QString &pixmapName){ m_pixmapName = pixmapName; update();}void Widget::paintEvent(QPaintEvent *event){ Q_UNUSED(event); QPainter painter(this); painter.setPen(Qt::NoPen); painter.drawPixmap(rect(), QPixmap(m_pixmapName));}
0 0
- Qt设置窗体背景
- Qt设置窗体背景颜色
- Qt中设置QML窗体无边框和背景透明
- MFC设置窗体背景
- 设置窗体的背景
- QT 设置窗体透明
- QT设置窗体透明
- Qt 设置对话框背景
- Qt 窗口设置背景
- QT设置窗口背景
- qt背景设置
- QT设置窗口背景
- qt 设置背景
- QT背景设置
- 设置C#窗体背景颜色...
- 设置MDI窗体,设置MDI背景
- Qt 子窗体透明度设置
- Qt 设置窗体无边框
- 153. Find Minimum in Rotated Sorted Array leetcode binary search
- 第一次【测试】
- C++11新特性之列表初始化
- jjb command
- java中如何调用数据库的存储过程
- Qt设置窗体背景
- JAVA设计模式(一)-开篇
- MySQL编码不一致导致乱码问题总结
- Mac 装机必备app
- 分布式消息队列RocketMQ与Kafka架构上的巨大差异之1 -- 为什么RocketMQ要去除ZK依赖?
- Win10应用商店出现0x80072EE2错误的解决方法
- 二,redis数据类型-String
- Ubuntu 环境中多线程下载工具Axel的安装与使用
- 关于在node.js进入文件目录的问题