Как установить цвет фона для всего окна приложения Qt?

Кто-нибудь знает, как можно установить цвет фона для всего окна приложения Qt?

До сих пор я использую таблицы стилей, но могу только выяснить, как назначить фоновый цвет для виджета, такого как QGroupBox или QPushButton. В принципе, если мне нужен черный фон, как бы я сделал его бесшовным без каких-либо границ исходного фона?

Ответ 1

Я бы просто использовал таблицу стилей для всего окна.

Например, если ваше окно наследуется от QWidget, вот что я делаю:

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

На моем Mac все мое окно приложения черное (кроме строки заголовка).

EDIT: в соответствии с комментарием, вот решение без использования файлов 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

Ответ 2

Это сработало для меня:

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

Ответ 3

Просто добавьте

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

к вашему коду, вы можете дать любой цвет напрямую.

Ответ 4

В виджетах я предлагаю вам увидеть В Qt, как установить цвет фона виджета, например, combobox или double spin box?. Также проверьте Custom Looks, используя таблицы стилей Qt 4.2. Помните, что эта вторая ссылка показывает вам, как использовать таблицы стилей в этих виджетах.

Если вы уже разработали что-то для Web и использовали CSS, это то же самое.

Ответ 5

Чтобы установить цвет фона, комбинация

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

в классе QWidget, созданном для меня. Это вариант решения Dirk Eddelbuettel, но использует функцию специально для фона.