如何为Qt应用程序的整个窗口设置背景颜色?

时间:2009-11-04 19:18:18

标签: c++ qt qstylesheet qwindow

有谁知道如何为Qt应用程序的整个窗口设置背景颜色?

到目前为止,我正在使用样式表,但只能弄清楚如何为窗口小部件分配背景颜色,例如QGroupBoxQPushButton。基本上,如果我想要一个黑色背景,我怎么能在没有任何原始背景边框的情况下使它变得无缝?

5 个答案:

答案 0 :(得分:26)

我只想在整个窗口中使用样式表。

例如,如果您的窗口是从QWidget继承的,那么我正在做的是:

MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setStyleSheet("background-color: black;");
}

在我的Mac上,我的整个应用程序窗口是黑色的(标题栏除外)。

编辑:根据评论,这是一个不使用ui文件和加载外部样式表的解决方案

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QVBoxLayout>
#include <QtGui/QPushButton>
#include <QtCore/QFile>

int main(int ArgC, char* ArgV[])
{
QApplication MyApp(ArgC, ArgV);

QMainWindow* pWindow = new QMainWindow;
QVBoxLayout* pLayout = new QVBoxLayout(pWindow);
pWindow->setLayout(pLayout);

QPushButton* pButton = new QPushButton("Test", pWindow);
pLayout->addWidget(pButton);

QFile file(":/qss/default.qss");
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());

qApp->setStyleSheet(styleSheet);

pWindow->setVisible(true);
MyApp.exec();
}

样式表文件(default.qss)如下:

QWidget {
  background-color: black;
}

此文件是资源文件(stylesheet.qrc)的一部分:

<RCC>
  <qresource prefix="/qss">
    <file>default.qss</file>
  </qresource>
</RCC>

这是我的项目文件:

TARGET = StyleSheet
TEMPLATE = app
SOURCES += main.cpp
RESOURCES += stylesheet.qrc

答案 1 :(得分:13)

这对我有用:

a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);

答案 2 :(得分:4)

只需添加

即可
setStyleSheet("background-color: white;");

到您的代码,您可以直接提供任何颜色。

答案 3 :(得分:2)

对于小工具,我建议你看In Qt, how do I set the background color of a widget like combobox or double spin box?。同时检查Custom Looks using Qt 4.2 Style Sheets。请记住,第二个链接向您展示了如何在这些小部件中使用样式表。

如果您已经为Web开发了一些东西并使用了CSS,那就是同样的事情。

答案 4 :(得分:0)

将组合背景颜色设置为

setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);

在QWidget派生类中为我工作。这是Dirk Eddelbuettel解决方案的变体,但是它专门用于背景。