誰かがQtアプリケーションのウィンドウ全体の背景色を設定する方法を知っていますか?Qtアプリケーションのウィンドウ全体の背景色を設定するにはどうすればよいですか?
これまでスタイルシートを使用していましたが、QGroupBox
やQPushButton
などのウィジェットに背景色を割り当てる方法しか分かりません。基本的に、黒い背景が必要な場合は、元の背景の境界がなくても、どのようにシームレスにすることができますか?
誰かがQtアプリケーションのウィンドウ全体の背景色を設定する方法を知っていますか?Qtアプリケーションのウィンドウ全体の背景色を設定するにはどうすればよいですか?
これまでスタイルシートを使用していましたが、QGroupBox
やQPushButton
などのウィジェットに背景色を割り当てる方法しか分かりません。基本的に、黒い背景が必要な場合は、元の背景の境界がなくても、どのようにシームレスにすることができますか?
私は単純にウィンドウ全体のためにスタイルシートを使用します。例えば
、あなたの窓は、ここで、QWidgetから継承している場合は、私がやっているものです:私のMac上で
MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setStyleSheet("background-color: black;");
}
を、私の全体のアプリケーションウィンドウは(タイトルバーを除く)黒です。
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
ウィジェットについては、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もチェックしてください。この2番目のリンクは、これらのウィジェットでスタイルシートを使用する方法を示しています。
既にWeb用に開発したCSSを使用している場合は、同じことです。
これは私のために働いています
a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
ほとんどのパレットロールでは、元のパレットを取得する必要はありません。デフォルトで構築されたパレットに1つのロールだけを設定し、ウィジェットのパレットを設定すると、指定したロールのみが変更されます。 –
これを動作させるには、 'this-> setAutoFillBackground(true);'のようなものを追加する必要があると思います。これは、ウィジェットのデフォルトの背景色をこのように設定するときにやっていたことです。 – gnovice
単純に自分のコードに
setStyleSheet("background-color: white;");
を追加し、あなたが直接、任意の色を与えることができます。 QWidgetの派生クラスで
setPaletteBackgroundColor(Qt::black);
setAutoFillBackground(true);
組み合わせが私のために働いた背景色を設定するには
。これはDirk Eddelbuettelのソリューションの変種ですが、バックグラウンドに特化した機能を使用しています。
スタイルシートでこれを行うにはどうしたらいいですか?私はQPushButtonのようなウィジェットのためにこれを行ってきましたが、全体としてバックグラウンドに何を使うべきかを理解することはできません。 – bryce
私はいくつかについても明確にしましょう。私はすべてのコードを手渡して以来、私はデザイナーから.uiファイルを使用していません。また、私は別のスタイルシート.qssファイルをソースコードに直接記述するのではなく、 – bryce
ありがとう、私はそれが私の鼻のすぐ下にあることを知っていた。 QWidget {背景色:黒;}は私が必要としたものでした。私はQWidgetを直接使用することができないことを認識していませんでした。 – bryce