Qt アプリケーションのウィンドウ全体に背景色を設定する方法を知っている人はいますか?
QGroupBox
これまでのところ、スタイルシートを使用していますが、やなどのウィジェットに背景色を割り当てる方法しかわかりませんQPushButton
。基本的に、黒の背景が必要な場合、元の背景の境界線なしでシームレスにするにはどうすればよいですか?
Qt アプリケーションのウィンドウ全体に背景色を設定する方法を知っている人はいますか?
QGroupBox
これまでのところ、スタイルシートを使用していますが、やなどのウィジェットに背景色を割り当てる方法しかわかりませんQPushButton
。基本的に、黒の背景が必要な場合、元の背景の境界線なしでシームレスにするにはどうすればよいですか?
ウィンドウ全体にスタイルシートを使用するだけです。
たとえば、ウィンドウが 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
これは私のために働いています:
a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
背景色の組み合わせを設定するには
setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);
QWidget 派生クラスでうまくいきました。これは、Dirk Eddelbuettel のソリューションの変形ですが、背景専用の関数を使用しています。