QT中 窗口部件的 背景图片 的设置
来源:互联网 发布:以色列粮食进口数据 编辑:程序博客网 时间:2024/05/21 22:34
方法一:
首先设置 autoFillBackground 属性为真
然后定义一个QPalette对象
设置QPalette对象的背景属性(颜色或图片)
最后设置QWidget对象的Palette
实例:
QWidget *widget = new QWidget;
widget->setAutoFillBackground(true);
QPalette palette;
//palette.setColor(QPalette::Background, QColor(192,253,123));
palette.setBrush(QPalette::Background, QBrush(QPixmap(":/images/background.png")));
widget->setPalette(palette);
方法二:
QPalette的方法
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFrame *frame = new QFrame;
frame->resize(400, 700);
QPixmap pixmap11(":/images/frame.png");
QPixmap pixmap = pixmap11 .scaled(400,700);
QPalette palette;
palette.setBrush(frame->backgroundRole(),QBrush(pixmap));
frame->setPalette(palette);
frame->setMask(pixmap.mask()); //可以将图片中透明部分显示为透明的
frame->setAutoFillBackground(true);
frame->show();
return app.exec();
}
方法三:
setStyleSheet方法( 非常好用的方法 )
设置属性使背景图自动调整来适应控件的大小。
#include <QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QFrame *frame = new QFrame;
frame->setObjectName("myframe");
frame->resize(400,700);
frame->setStyleSheet("QFrame#myframe{ border-image : url(:/images/frame.png)}" );
frame->show();
return app.exec();
}
注意代码中红线的部分,设置ObjectName,才能保证setStyleSheet只作用在我们的frame上,不影响其子控件的背景设置。之所以用border-image而不用background-image,还是上面的问题,用background-image不能保证图片大小和控件大小一致,图片不能完全显示。
方法四:
paintEvent事件方法
//myframe.h文件
#ifndef MYFRAME_H
#define MYFRAME_H
#include <QWidget>
#include <QtGui>
class MyFrame : public QWidget
{
public:
MyFrame();
void paintEvent(QPaintEvent *event);
};
#endif // MYFRAME_H
//myframe.cpp文件
#include "myframe.h"
MyFrame::MyFrame()
{
}
void MyFrame::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,400,700,QPixmap("images/frame.png"));
}
//main.cpp文件
#include <QApplication>
#include <QtGui>
#include "myframe.h"
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
MyFrame *frame = new MyFrame;
frame->resize(400,700);
frame->show();
return app.exec();
}
这个背景图片不随着窗口的大小而变化,因为它的固定大小被设置成(400,700)了。重写QWidget的paintEvent事件,当控件发生重绘事件,比如show() 时,系统就会自动调用paintEvent函数。
转: http://blog.sina.com.cn/s/blog_66a133b70100x44p.html
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- QT中 窗口部件的 背景图片 的设置
- qt 中窗口以及窗口部件背景图案的设置
- qt设置窗口的背景图片
- Qt如何设置窗口的背景图片
- Qt如何设置窗口的背景图片?
- 设置窗口的背景图片
- qt窗口部件的布局
- QT -- 窗口部件的布局
- QT常见的窗口部件
- Qt中按钮背景图片的切换设置
- QT中如何设置窗体的背景图片。
- QT中如何设置窗体的背景图片。
- QT中如何设置窗体的背景图片
- “A valid provisioning profile for this executable was not found.”
- mysql_init()线程安全问题
- 前端工程师的价值体现在哪里?
- 内核的同步机制(原子锁)
- 第23贴:电阻 & 电容
- QT中 窗口部件的 背景图片 的设置
- activeMQ,spring的jmstemplate简单例子
- javadoc
- 关于团队激励的理念和实践
- .net面试题目
- CentOS常用用户管理命令
- POJ 1151 扫描线+线段树+离散化
- eclipse 开发JNI
- 第24贴:经典接法三极管电路的静态计算