我正在开发Qt 5小部件桌面应用程序,我想为所有弹出的窗口和对话框提供通用背景。问题是,对于每个窗口,我必须一遍又一遍地指定相同的代码来加载相同的背景。我还使用paint
函数重写,以便在调整窗口大小时不会扭曲背景。这是我的代码:
SettingsDialog::SettingsDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::SettingsDialog)
{
ui->setupUi(this);
pixmapBg.load(":/images/google-material-design-wallpaper-10.jpg");
}
void SettingsDialog::paintEvent(QPaintEvent *pe)
{
QPixmap pixmapBgL = pixmapBg.scaled(this->size());
QPalette palette;
palette.setBrush(QPalette::Background, pixmapBgL);
this->setPalette(palette);
}
有没有一种方法可以使用单个文件而不是在每个窗口中提及它,从而在Qt中容纳它?
最佳答案
是的你可以!您将必须提供own stylesheet或通过调用QApplication::setStyleSheet(styleName)初始化应用程序。
从评论中跟进:setStyleSheet
是最快的方法,即
qApp->setStyleSheet("QDialog, QMessageBox {background-image: url(:/images/google-material-design-wallpaper-10.jpg);}");
假设您有一个有效的QApplication参考
qApp
。请注意,如果要细化样式表的范围,还可以引用自定义子类。