Weiß jemand, wie man eine Hintergrundfarbe für das gesamte Fenster einer Qt-Anwendung festlegen kann?
Bisher verwende ich Stylesheets, kann aber nur herausfinden, wie einem Widget eine Hintergrundfarbe wie QGroupBox
oder QPushButton
zugewiesen wird. Grundsätzlich, wenn ich einen schwarzen Hintergrund haben möchte, wie würde ich ihn ohne Ränder des ursprünglichen Hintergrunds nahtlos gestalten?
Ich würde einfach ein Stylesheet für das gesamte Fenster verwenden.
Wenn Ihr Fenster beispielsweise von QWidget erbt, mache ich Folgendes:
MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setStyleSheet("background-color: black;");
}
Auf meinem Mac ist mein gesamtes Anwendungsfenster schwarz (außer der Titelleiste).
BEARBEITEN: Laut Kommentar ist hier eine Lösung ohne Verwendung von UI-Dateien und Laden eines externen Stylesheets
#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();
}
Die Stylesheet-Datei (default.qss) sieht wie folgt aus:
QWidget {
background-color: black;
}
Diese Datei ist Teil einer Ressourcendatei (stylesheet.qrc):
<RCC>
<qresource prefix="/qss">
<file>default.qss</file>
</qresource>
</RCC>
Und hier ist meine Projektdatei:
TARGET = StyleSheet
TEMPLATE = app
SOURCES += main.cpp
RESOURCES += stylesheet.qrc
Das hat für mich funktioniert:
a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
Einfach hinzufügen
setStyleSheet("background-color: white;");
in Ihrem Code können Sie jede Farbe direkt angeben.
Für die Widgets, die ich Ihnen vorschlagen möchte, sehen Sie Wie stelle ich in Qt die Hintergrundfarbe eines Widgets ein, z. . Überprüfen Sie auch Custom Looks mit Qt 4.2 Style Sheets . Denken Sie daran, dass dieser zweite Link zeigt, wie Sie die Stylesheets in diesen Widgets verwenden.
Wenn Sie bereits etwas für Web entwickelt und CSS verwendet haben, ist es dasselbe.
Die Hintergrundfarbe der Kombination festlegen
setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);
in der abgeleiteten QWidget-Klasse arbeitete ich für mich. Dies ist eine Variante der Lösung von Dirk Eddelbuettel, nutzt jedoch die Funktion speziell für den Hintergrund.