Qt直接给QWidget设置背景图片不会起效果,但是可以通过QFrame起效。也就是先布置一层QFrame,然后把其他控件都放在QFrame上,然后设置qss的时候设置在QFrame上。测试代码如下:
#include "testFrame.h"
#include <QFile>
testFrame::testFrame(QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
QFile qssfile("testFrame.qss");
qssfile.open(QFile::ReadOnly);
this->setStyleSheet(qssfile.readAll());
}
qss代码如下:
QFrame#frame
{
border-image:url(codeRain.jpg)
}
效果如下:
会有一个边框。可以设置layout的margin让它消失。
操作如下:
效果如下:
可以看见白色边框已经去掉了。