Does anyone know how one would be able to set a background color for the whole window of a Qt application?
So far I am using stylesheets but can only figure ou开发者_JAVA百科t how to assign a background color to a widget such as QGroupBox
or QPushButton
. Basically, if I want a black background how would I make it seamless without any borders of the original background?
I would simply use a Style Sheet for the whole window.
For instance, if your window is inheriting from QWidget, here is what I'm doing :
MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setStyleSheet("background-color: black;");
}
On my Mac, my whole application window is black (except the title bar).
EDIT : according to comment, here is a solution without using ui files and loading an external style sheet
#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();
}
The style sheet file (default.qss) is as follow :
QWidget {
background-color: black;
}
This file is part of a resource file (stylesheet.qrc) :
<RCC>
<qresource prefix="/qss">
<file>default.qss</file>
</qresource>
</RCC>
And here is my project file :
TARGET = StyleSheet
TEMPLATE = app
SOURCES += main.cpp
RESOURCES += stylesheet.qrc
This has worked for me:
a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
Simply just add
setStyleSheet("background-color: white;");
to your code, you can give any color directly.
For the widgets I suggest you to see In Qt, how do I set the background color of a widget like combobox or double spin box?. Also check Custom Looks using Qt 4.2 Style Sheets. Remember that this second link shows you how to use the stylesheets in these widgets.
If you have already developed something for Web and used CSS, it's the same thing.
To set the background color the combination
setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);
in the QWidget derived class worked for me. This is a variant of Dirk Eddelbuettel's solution but makes use of the function specifically for the background.
精彩评论