実行時にstyleSheetプロパティを変更するにはどうすればよいですか?

ヴェルネック

Qt、5.9、Windowsを使用しています。プログラムの開始後にstyleSheetプロパティを変更しようとしているので、ユーザーはプログラムの外観をカスタマイズできます。

styleSheetファイルを作成していません。代わりに、Qtのデザインモードで、変更しようとしている要素のプロパティに移動し、[styleSheet]プロパティをクリックして、Qtによって表示されるウィンドウに変更するプロパティを追加します。例については、画像1 *を確認してください。赤いボックスは、styleSheetプロパティを追加する場所を示し、緑のボックスは、styleSheetプロパティを追加できるポップアップウィンドウに移動するためにクリックする場所を示しています。

画像2 *は、この方法でstyleSheetプロパティを追加したときに.uiコードがどのように記述されるかを示しています。ここの赤いボックスは、コードが.uiファイルに自動的に書き込まれる方法を示しています。

menuBarのEditメニューに、「Appearance」と呼ばれるサブメニューを配置しました。プログラムの色のいくつかのプリセットオプションと、プログラムを自分でカスタマイズするオプションがあります。画像3 *では、メニューを見ることができます。

それぞれ画像1、2、3。

ユーザーが色オプションの1つをクリックすると、プログラムのstyleSheetプロパティが変更され、選択した色と色が一致するようになります。ここで問題が発生します。画像4は、次のカラーオプションをクリックするためのコードを示しています。

カラーオプションコマンド

In the red square, the errors I have been getting, and the respective lines that produced them. In the yellow square, two of many trials I have made. In the blue square, the most seemingly effective tries. The one in line 21 wasn't compiled when I took the screenshot, but it only complained after compilation (but it did complained!). It says "notr" is not defined in this scope. So I tried declaring it. The one in line 22 is gave me an error when I tried "string notr", saying that the string was not defined in this scope. I included the <stdlib.h>, and changed it to "std::string notr", but it is still complaining. Like you can see in the red box, it says "expected primary-expression before 'notr'".

What does it mean? How do I fix this, so I can change the styleSheet properties of my elements? I thought of using styleSheet files for the pre-set colors, but I would like to avoid, if possible, using more files than needed. Also, how would the user be able o set a custom styleSheet, if the options are pre-set?

Thanks for the attention and help.

P.S.: Just as a bonus question. I'm trying changing basic colors first, then start advancing. Ultimately, I want to be able to reproduce something like Substance Look and Feel, its way of handling colors, making gradients, or giving the titleBar more than one color. Does anyone know what route to take? I believe styleSheets are too weak to reproduce those effects, so I would like to know how else could I change a program to look even more like Susbtance's skins. Thanks again.

*Images 1, 2 and 3 appear in the same image file, because StackOverflow wouldn't let me post more than 2 images.

eyllanesc

The function setProperty() according to the documentation:

Sets the value of the object's name property to value.

If the property is defined in the class using Q_PROPERTY then true is returned on success and false otherwise. If the property is not defined using Q_PROPERTY, and therefore not listed in the meta-object, it is added as a dynamic property and false is returned.

That is, the property must be defined in the class with that macro, but stylesheet does not meet those requirements so you will not be able to access with that method.

To dynamically change that property you must use the setStyleSheet(). For example in your case:

void MainWindow::on_actionBlack_triggered()
{
    centralWidget()->setStyleSheet("background-color: rgb(78, 78, 78);");
}

void MainWindow::on_actionBlack_Piano_triggered()
{
   //another color
    centralWidget()->setStyleSheet("background-color: rgb(111, 111, 111);");
}

void MainWindow::on_actionPok_dex_Orange_triggered()
{
   //another color
    centralWidget()->setStyleSheet("background-color: rgb(123, 22, 111);");
}

Note:

  • の使用std::string避けてくださいQString。を使用する必要があります

  • 命令some_function(type_variable name_variable = some_value);は有効なC / C ++構文ではありません

デザインxmlの場合:

<property name="styleSheet">
 <string notr="true"> background-color: rgb (78, 78, 78);
 font 10pt &quot;Arial&quot;;
 color: rgb(220, 220, 220);<string>
</property>

notr="true" Qt翻訳システムを使用する場合、この文字列は考慮されないことを意味します:翻訳なし。

そのxmlは、コンパイラによって直接使用されることはありません。コンパイラは、これらの.uiファイルをui_yourdesign.hという名前の.hに変換します。

このsetStyleSheet()関数はQWidgetの一部であるためQWidget、QMenubar、QLineEdit、QTextEditなど、から継承するすべてのクラスで使用できます。

たとえば、表示するxmlは次のとおりです。

ここに画像の説明を入力してください

theBarメニューがプロパティに適用されていることを示します。その命令は、次のステートメントを使用してC ++を介して変更できます。

ui->menuBar->setStyleSheet("background-color: rgb (78, 78, 78); font 10pt; color: rgb(220, 220, 220);")

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C ++で実行時にQMLオブジェクトのプロパティを変更するにはどうすればよいですか?

分類Dev

実行時に次のBeanプロパティを変更するにはどうすればよいですか?

分類Dev

Boost Graph LibraryでBFSを実行しているときにプロパティを変更するにはどうすればよいですか?

分類Dev

プロパティがangular2-nativescriptを変更した後にメソッドを実行するにはどうすればよいですか?

分類Dev

メインスレッドの実行中に制御プロパティを変更するにはどうすればよいですか?

分類Dev

Delphi TDBGridの子孫から実行時にDBGridを表示する前に、プログラムでTColumnプロパティを変更するにはどうすればよいですか?

分類Dev

CSSプロパティ値を要素の値に変更するにはどうすればよいですか?

分類Dev

JavaScript:引数から要素プロパティを変更するにはどうすればよいですか?

分類Dev

jQueryのプロパティから値を変更するにはどうすればよいですか?

分類Dev

春の環境でプロパティを変更するにはどうすればよいですか?

分類Dev

redux状態でプロパティを追加/変更するにはどうすればよいですか?

分類Dev

redux状態でプロパティを追加/変更するにはどうすればよいですか?

分類Dev

HttpRequest.ApplicationPathプロパティを手動で変更するにはどうすればよいですか?

分類Dev

ボタンでBeanプロパティを変更するにはどうすればよいですか?

分類Dev

RTTIでdelphiプロパティGetter / Setterを変更するにはどうすればよいですか?

分類Dev

WPFでTextblockのtextプロパティを変更するにはどうすればよいですか?

分類Dev

jqueryでcontent:urlのcssプロパティを変更するにはどうすればよいですか?

分類Dev

JavaScriptでCSSの表示プロパティを変更するにはどうすればよいですか?

分類Dev

jQueryのヘッダープロパティを変更するにはどうすればよいですか?

分類Dev

バケットのプロパティを変更するにはどうすればよいですか

分類Dev

親要素の子プロパティを変更するにはどうすればよいですか?

分類Dev

既存のTextStyleの特定のプロパティを変更するにはどうすればよいですか?

分類Dev

google.maps.InfoWindowプロパティを変更するにはどうすればよいですか?

分類Dev

既存のTwilio番号のプロパティを変更するにはどうすればよいですか?

分類Dev

Androidカメラのプロパティを変更するにはどうすればよいですか?

分類Dev

特定のCSS疑似要素のプロパティを変更するにはどうすればよいですか?

分類Dev

Jetbrains IDEの選択プロパティを変更するにはどうすればよいですか?

分類Dev

疑似クラスのプロパティを変更するにはどうすればよいですか?

分類Dev

Mavenでは、実行時にプロパティ値を動的に構築するにはどうすればよいですか?

Related 関連記事

  1. 1

    C ++で実行時にQMLオブジェクトのプロパティを変更するにはどうすればよいですか?

  2. 2

    実行時に次のBeanプロパティを変更するにはどうすればよいですか?

  3. 3

    Boost Graph LibraryでBFSを実行しているときにプロパティを変更するにはどうすればよいですか?

  4. 4

    プロパティがangular2-nativescriptを変更した後にメソッドを実行するにはどうすればよいですか?

  5. 5

    メインスレッドの実行中に制御プロパティを変更するにはどうすればよいですか?

  6. 6

    Delphi TDBGridの子孫から実行時にDBGridを表示する前に、プログラムでTColumnプロパティを変更するにはどうすればよいですか?

  7. 7

    CSSプロパティ値を要素の値に変更するにはどうすればよいですか?

  8. 8

    JavaScript:引数から要素プロパティを変更するにはどうすればよいですか?

  9. 9

    jQueryのプロパティから値を変更するにはどうすればよいですか?

  10. 10

    春の環境でプロパティを変更するにはどうすればよいですか?

  11. 11

    redux状態でプロパティを追加/変更するにはどうすればよいですか?

  12. 12

    redux状態でプロパティを追加/変更するにはどうすればよいですか?

  13. 13

    HttpRequest.ApplicationPathプロパティを手動で変更するにはどうすればよいですか?

  14. 14

    ボタンでBeanプロパティを変更するにはどうすればよいですか?

  15. 15

    RTTIでdelphiプロパティGetter / Setterを変更するにはどうすればよいですか?

  16. 16

    WPFでTextblockのtextプロパティを変更するにはどうすればよいですか?

  17. 17

    jqueryでcontent:urlのcssプロパティを変更するにはどうすればよいですか?

  18. 18

    JavaScriptでCSSの表示プロパティを変更するにはどうすればよいですか?

  19. 19

    jQueryのヘッダープロパティを変更するにはどうすればよいですか?

  20. 20

    バケットのプロパティを変更するにはどうすればよいですか

  21. 21

    親要素の子プロパティを変更するにはどうすればよいですか?

  22. 22

    既存のTextStyleの特定のプロパティを変更するにはどうすればよいですか?

  23. 23

    google.maps.InfoWindowプロパティを変更するにはどうすればよいですか?

  24. 24

    既存のTwilio番号のプロパティを変更するにはどうすればよいですか?

  25. 25

    Androidカメラのプロパティを変更するにはどうすればよいですか?

  26. 26

    特定のCSS疑似要素のプロパティを変更するにはどうすればよいですか?

  27. 27

    Jetbrains IDEの選択プロパティを変更するにはどうすればよいですか?

  28. 28

    疑似クラスのプロパティを変更するにはどうすればよいですか?

  29. 29

    Mavenでは、実行時にプロパティ値を動的に構築するにはどうすればよいですか?

ホットタグ

アーカイブ