您的位置:首页 > 编程语言 > Qt开发

Qt设置窗体背景

2017-01-04 13:23 471 查看
简述

实现方式

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));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 图片