8

Qtを使用してスタイルシート(.qssスタイルリソース)をグローバルにロードするにはどうすればよいですか?

私は物事をより効率的にしようとしています:

middleIntText -> setStyleSheet("QLineEdit {  border: 1px solid gray;
                                border-radius: 5px;padding: 0 8px;
                                selection-background-color:darkgray;
                                height:40px;font-size:15px;}");

すべてのQLineEditウィジェットに対してQLineEditを1回ロードすると、次のように機能すると思いました。

qssファイル:

QLineEdit {     border: 1px solid gray;
                border-radius: 5px;
                padding: 0 8px;
                selection-background-color:darkgray;
                height:40px;
                font-size:15px;}

cppファイル:

QApplication a(argc, argv);
QFile stylesheet("formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
a.setStyleSheet(setSheet);

おそらくこれは正しいです、そして私は何か他の間違ったことをしていますか?

4

2 に答える 2

7

QStyle * QApplication :: setStyle(const QString&style)を呼び出し、QStyleFactoryからスタイルのQStyleオブジェクトを要求します。

代わりに、アプリケーションのスタイルシートを設定するvoid QApplication :: setStyleSheet(const QString&sheet)を呼び出す必要があります。

于 2012-07-27T07:27:20.570 に答える
4

上記の試行は正しい構文ですが、機能しない理由があります。

考えられる問題:

  1. ソース ファイル (.qss) が取得されていません

  2. カスケードを適用するために誤った上部ウィジェットが選択されています。

  3. .qss (CSS) コードの構文。

上記の質問をしなければならなかった理由は、これら 3 つの問題のうち 2 つを抱えていたからです。最初にファイルの正しい場所を指定する必要があり、次に QWidget に直接適用する必要がありました。

QFile stylesheet("G:/Applications/Projects/ProspectTracker/formStyle.qss");
stylesheet.open(QFile::ReadOnly);
QString setSheet = QLatin1String(stylesheet.readAll());
QWidget::setStyleSheet(setSheet);

@ビルご協力ありがとうございます。.setStyle彼は、私が投稿したのではなく投稿したことを指摘しました.setStyleSheet。上記のサンプル コードにはこれが反映されていませんが、それを変更しなければ何も機能しませんでした。

于 2012-07-27T14:29:31.627 に答える