如何为Qt应用程序的整个窗口设置背景颜色?
有谁知道如何能够为Qt应用程序的整个窗口设置背景颜色?如何为Qt应用程序的整个窗口设置背景颜色?
到目前为止,我正在使用样式表,但只能弄清楚如何为小部件指定背景颜色,如QGroupBox
或QPushButton
。基本上,如果我想要一个黑色的背景,我将如何使它无缝,没有任何原始背景的边界?
我只想用一个样式表针对整个窗口。
举例来说,如果你的窗口从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
对于小工具,我建议你看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的东西,那是一回事。
这工作对我来说:
a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
这是我的经验,对于大多数调色板角色,您甚至不需要获取原始调色板。在默认构造调色板上设置一个角色,并为该小部件设置该调色板,将只会更改您指定的角色。 –
我相信现在你也必须添加像'this-> setAutoFillBackground(true);'这样的工作。这就是我以这种方式为widget设置默认背景颜色时必须要做的事情。 – gnovice
只是简单地添加
setStyleSheet("background-color: white;");
你的代码,你可以直接给任何颜色。
要设置背景色的组合
setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);
在QWidget的派生类
为我工作。这是Dirk Eddelbuettel解决方案的一个变种,但专门为背景使用了该功能。
如何在样式表中执行此操作?我已经完成了像QPushButton这样的小部件,但是无法弄清楚整体背景使用什么。 – bryce
让我澄清一些事情。由于我手工编码所有内容,因此我没有使用设计者的.ui文件。另外,我有一个单独的样式表.qss文件,而不是将代码直接放入源代码中。 – bryce
谢谢,我知道它正好在我的鼻子下面。 QWidget {background-color:black;}是我所需要的。我没有意识到我可以直接使用QWidget。 – bryce