MyWidget*w=new MyWidget;
QPalette palette;
palette.setBrush(w->backgroundRole(), QBrush(QPixmap("./pi/backGround.PNG")));
w->setPalette(palette);
w->show();
按上面的做就可以设置背景了,注意替换你自己的widget的类和图片的路径
2. 本人刚学qt,想利用qt的ui界面设计器快速的加入一张图片,怎么插入啊!求救,明天要交的。
1、qt设计器插入图片的话,就利用QSS吧,这个是最快的方法,给你提供一个刚刚给你写的小程序吧,效果:
其他的设置方法一样的。
3. qt中主窗口背景设置
以前遇到的很多小知识,从今天开始都一点一点记录下来。。。
窗口背景无非两种:背景色、背景图片。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,则有背景色,如果放到一个父窗口中,就没有效果。添加该句即可!
4. linux涓嬬殑Qt濡备綍璁剧疆涓荤獥鍙g殑鑳屾櫙锲剧墖锛岀敤镓嫔啓浠g爜镄勯偅绉
Qt4鐗堟湰浠ヤ笂鍙鍦ㄦ瀯阃犲嚱鏁颁腑锷犲叆濡备笅浠g爜
RcMainWindow::RcMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::RcMainWindow)
{
ui->setupUi(this);
QPixmap pixmap(":/img/background.bmp");
QPalette palette;
palette.setBrush(backgroundRole(), QBrush(pixmap));
setPalette(palette);
}
姝ゅ栦篃鍙瀹炵幇缁ф圹镊鐖剁被QMainWindow镄勮櫄鍑芥暟paintEvent锛屽苟鍦ㄨュ嚱鏁颁腑锷犲叆钖屾牱浠g爜銆