qt窗口设置背景图片文件路径

qt窗口设置背景图片文件路径,第1张

1 首先需要在Qt的工程文件中添加背景图片资源,可以将图片文件拖拽到Qt的资源管理器中,也可以在.pro文件中添加

2 在窗口的构造函数中调用setStyleSheet函数设置背景图片样式,样式中使用url函数指定图片文件的路径

3 延伸内容:在设置背景图片时还可以指定图片的平铺方式、透明度等属性,也可以使用动画效果实现图片的渐变切换。

此外,如果需要在程序运行时动态更改背景图片,可以使用QPalette类来实现。

以前遇到的很多小知识,从今天开始都一点一点记录下来。。。

窗口背景无非两种:背景色、背景图片。Qt中窗口背景如何设置?下面介绍三种方法:

一、QPalette设置背景

二、实现paintEvent,使用QPainter来绘制背景

三、使用QSS来设置背景

关于QSS的使用不想多说,一般我不用QSS设置窗口背景,也不建议使用。(注意:这里是对于窗口而言)。如果是子部件当然可以。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式

子部件一般情况下也不需要设置背景图片,即使需要使用QSS也完全可以满足。设置较多的是背景色与图标,QSS中使用background或者background-color的方式可以实现背景色的设置,图标则可以使用setPixmap或者setIcon来设置!

下面介绍QPalette以及paintEvent

一、QPalette设置背景

构造函数中可以使用如下方式:

(1)设置背景色

QPalette palette(this->palette())

palette.setColor(QPalette::Background, Qt::black)

this->setPalette(palette)

或:

QPalette palette

palette.setBrush(this->backgroundRole(), Qt::black)

this->setPalette(palette)

这里setColor和setBrush都可以使用!

(2)设置背景图片

QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size())

QPalette palette(this->palette())

palette.setBrush(QPalette::Background, QBrush(pixmap))

this->setPalette(palette)

上面方式无论设置背景色还是背景图片QPalette::Background与this->backgroundRole()是等价的!

二、paintEvent设置背景

(1)设置背景色

void IIIMark::paintEvent(QPaintEvent *)

{

QPainter painter(this)

painter.setBrush(Qt::black)

painter.drawRect(this->rect())

}

(2)设置背景图片

void IIIMark::paintEvent(QPaintEvent *)

{

QPixmap pixmap = QPixmap(":/qm/safe").scaled(this->size())

QPainter painter(this)

painter.drawPixmap(this->rect(), pixmap)

}

注意:

(1)以上都是用scaled方式对图片进行了适应窗口大小的设置,因为所给的图片大小不一定满足要求,所以采用此方式!当然图片经过拉伸或者压缩之后会变形(纯色图片除外),所以对图片采用此方式时需要注意。

(2)设置背景范围的时候如果需要充满整个窗口最好使用this->rect(),因为我看到很多人在使用QRect(0, 0, 400, 400)之类的语句,那么如果窗口大小改变了呢?此句是不是要跟着变呢?

(3)如果需要背景图片或者背景色随可以发生改变时,也就是所谓的换肤功能,则采用paintEvent的方式,在需要改变的时候使用update()来进行更新。

(4)this->setAutoFillBackground(true)又让我想起了tr(),被很多人滥用。这句话在什么时候使用呢?不妨采用QPalette设置背景的方式加上与去掉这句话对比一下(在有父窗口的情况下使用)。如果这个QWidget直接show,则有背景色,如果放到一个父窗口中,就没有效果。添加该句即可!

void Background::paintEvent( QPaintEvent * event ){

QPixmap pixmap = QPixmap("123.bmp").scaled(this->size())

QPainter painter(this)

painter.drawPixmap(this->rect(), pixmap)

}设置QT程序的背景


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11572087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存