嗨,我是QT创作者的新手.我已经尝试了很多东西来设置Q主窗口的背景图像.我在图片中添加了一个资源文件夹.我尝试在UI中使用setstylesheet添加,并尝试编码.当我使用UI时,我可以看到图像,但是当我运行它时,没有任何显示.我想把一张扑克桌的图像作为背景,并且能够将按钮等放在上面.
main.cpp中:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setStyleSheet("{background-image: url(:/images/images/PokerTableBackground.jpg);}");
}
MainWindow::~MainWindow()
{
delete ui;
}
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,我尝试过这样做,并将图像放在UI中,而且其中任何一个都不起作用.我想将图像设置为整个事物的背景.
我也试过用这个:
QWidget *pic = new QWidget(ui->tab);
pic->setStyleSheet("background-image: url(:/images/images/PokerTableBackground.jpg)");
pic->setGeometry(QRect(10,10,220,48)); // your location and size.
Run Code Online (Sandbox Code Playgroud)
Bar*_*uda 15
您可以MainWindow通过执行以下操作向您添加背景图像:
QPixmap并为其提供图像的路径.QPalette并设置它就可以了.QBrushColorRoleQPalette::BackgroundMainWindow调色板设置为您创建的调色板.例如,您可以将此行添加到MainWindow类的构造函数中:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPixmap bkgnd("/home/user/Pictures/background.png");
bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio);
QPalette palette;
palette.setBrush(QPalette::Background, bkgnd);
this->setPalette(palette);
}
Run Code Online (Sandbox Code Playgroud)
这个的优点是你能够以编程方式修改/更改背景图像,而无需使用或学习任何CSS样式表语法.
你可以设置中央窗口的背景样式表,
this->centralWidget()->setStyleSheet("background-image:url(\"bkg.jpg\"); background-position: center; ");
Run Code Online (Sandbox Code Playgroud)
在构造函数中它将是这样的:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->centralWidget()->setStyleSheet(
"background-image:url(\"bkg.jpg\"); background-position: center;" );
}
Run Code Online (Sandbox Code Playgroud)
CSS 样式背景将在子窗口小部件中继承,从而创建看起来很奇怪的窗口。一个可能的解决方案是将背景限制为MainWindow或#centralWidget。此外,如果您想拉伸图像以覆盖整个小部件,请使用这种 CSS
this->setStyleSheet(
"#centralWidget { "
" border-image: url(:/background.png) 0 0 0 0 stretch stretch;"
"}");
Run Code Online (Sandbox Code Playgroud)