Как установить цвет фона для всего окна приложения Qt?
Кто-нибудь знает, как можно установить цвет фона для всего окна приложения Qt?
Пока я использую таблицы стилей, но могу только выяснить, как назначить цвет фона для виджета, такого как QGroupBox
или же QPushButton
, По сути, если я хочу черный фон, как бы сделать его бесшовным без каких-либо границ исходного фона?
5 ответов
Я бы просто использовал таблицу стилей для всего окна.
Например, если ваше окно наследуется от QWidget, вот что я делаю:
MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setStyleSheet("background-color: black;");
}
На моем Mac все окно моего приложения черное (кроме строки заголовка).
РЕДАКТИРОВАТЬ: согласно комментарию, вот решение без использования файлов пользовательского интерфейса и загрузки внешней таблицы стилей
#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
Это сработало для меня:
a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
Просто добавь
setStyleSheet("background-color: white;");
к вашему коду вы можете дать любой цвет напрямую.
Для виджетов, которые я предлагаю вам увидеть В Qt, как мне установить цвет фона виджета, такого как комбинированный список или двойное вращение?, Также проверьте Custom Looks, используя таблицы стилей Qt 4.2. Помните, что эта вторая ссылка показывает вам, как использовать таблицы стилей в этих виджетах.
Если вы уже разработали что-то для Web и использовали CSS, это то же самое.
Чтобы установить цвет фона комбинации
setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);
в производном классе QWidget работал для меня. Это вариант решения Дирка Эддельбюттеля, но он использует функцию специально для фона.