Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Standard colors in QtCreator (KDE)
QtWS25 Last Chance

Standard colors in QtCreator (KDE)

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
kdeqtquickqmlarch linux
22 Posts 3 Posters 7.7k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    Rouleaux
    wrote on 2 Aug 2016, 11:12 last edited by
    #1

    I have just got started trying QtCreator today, on Arch Linux with KDE (BreezeDark theme).

    Below this, there is a picture of the standard "Hello World" application in Qt with QML (QtQuick). I can't find out why the text in the button is white, as I haven't changed a single thing apart from adding the button..

    To be clear, there is text in the button, it's just not visible due to the color.

    Image

    ? 1 Reply Last reply 2 Aug 2016, 11:42
    0
    • R Rouleaux
      2 Aug 2016, 11:12

      I have just got started trying QtCreator today, on Arch Linux with KDE (BreezeDark theme).

      Below this, there is a picture of the standard "Hello World" application in Qt with QML (QtQuick). I can't find out why the text in the button is white, as I haven't changed a single thing apart from adding the button..

      To be clear, there is text in the button, it's just not visible due to the color.

      Image

      ? Offline
      ? Offline
      A Former User
      wrote on 2 Aug 2016, 11:42 last edited by A Former User 8 Feb 2016, 11:42
      #2

      @Rouleaux Hi, welcome to the Qt forum! The problem here is that the text color of the system palette is used but the background of the button is only a grey image and thus does not change with respect to the system palette. That's a bug in the Button component. You can work around that by providing a custom style to the Button that works as intended (using SystemPalette component). Or better port your application from Qt Quick Controls 1 to Qt Quick Controls 2.

      1 Reply Last reply
      1
      • R Offline
        R Offline
        Rouleaux
        wrote on 2 Aug 2016, 11:43 last edited by Rouleaux 8 Feb 2016, 11:47
        #3

        @Wieland Thank you for your very fast reply! I do think though, that I am already using Qt Quick 2. Is there a way I can check that?

        1 Reply Last reply
        0
        • ? Offline
          ? Offline
          A Former User
          wrote on 2 Aug 2016, 11:46 last edited by A Former User 8 Feb 2016, 11:47
          #4

          This might be a bit confusing: You are most certainly already using Qt Quick 2. But the buttons and all the other controls are part of an additional module named "Qt Quick Controls". And there are now two versions of the latter: Qt Quick Controls 1 and Qt Quick Controls 2. You can use either version together with Qt Quick 2 but Qt Quick Controls 2 is (obviously) newer and better.

          1 Reply Last reply
          1
          • ? Offline
            ? Offline
            A Former User
            wrote on 2 Aug 2016, 11:48 last edited by
            #5

            In your QML file you specify which modules you want to use, e.g.:

            import QtQuick 2.7
            import QtQuick.Controls 2.0
            
            1 Reply Last reply
            1
            • R Offline
              R Offline
              Rouleaux
              wrote on 2 Aug 2016, 11:50 last edited by Rouleaux 8 Feb 2016, 11:51
              #6

              Oh you are absolutely right. I see that I am using QtQuick.Controls 1.5

              I will try changing that to 2.0, see if that works. Thank you so much so far!

              EDIT: It seems that my system does not have 2.0 installed module "QtQuick.Controls" version 2.0 is not installed

              1 Reply Last reply
              0
              • ? Offline
                ? Offline
                A Former User
                wrote on 2 Aug 2016, 11:52 last edited by
                #7

                Qt Quick Controls 2 was introduced with Qt 5.7.

                1 Reply Last reply
                1
                • R Offline
                  R Offline
                  Rouleaux
                  wrote on 2 Aug 2016, 11:55 last edited by Rouleaux 8 Feb 2016, 12:01
                  #8

                  I have made a new project with Qt 5.7, but it seems that I have just version 1.5 installed? I can't import 2.0 either on Qt 5.7

                  EDIT: I didn't realise that Qt Quick Controls was available for download via the Arch Repos. Thank you so much for solving this problem!

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    Rouleaux
                    wrote on 2 Aug 2016, 12:09 last edited by Rouleaux 8 Feb 2016, 12:09
                    #9

                    @Wieland
                    If I may hijack my own thread, is there a way to apply the SystemPalette application-wide? The way I use it now, it only applies to one element of my application.

                    Window { SystemPalette { id: palette; colorGroup: SystemPalette.Active } color: palette.window visible: true width: 640 height: 480 title: qsTr("Hello World")

                    1 Reply Last reply
                    0
                    • ? Offline
                      ? Offline
                      A Former User
                      wrote on 2 Aug 2016, 13:07 last edited by
                      #10

                      Don't know how to do it from within a QML file but you can do it from C++:

                      #include <QGuiApplication>
                      #include <QQmlApplicationEngine>
                      #include <QPalette>
                      
                      int main(int argc, char *argv[])
                      {
                          QGuiApplication app(argc, argv);
                      
                          QPalette systemPalette = QGuiApplication::palette();
                          systemPalette.setColor(QPalette::Active, QPalette::Button, QColor("orange"));
                          QGuiApplication::setPalette(systemPalette);
                      
                          QQmlApplicationEngine engine;
                          engine.load(QUrl(QLatin1String("qrc:/main.qml")));
                      
                          return app.exec();
                      }
                      
                      1 Reply Last reply
                      1
                      • R Offline
                        R Offline
                        Rouleaux
                        wrote on 2 Aug 2016, 13:19 last edited by
                        #11

                        That code doesn't seem to change anything visually. Am I doing something wrong?

                        1 Reply Last reply
                        0
                        • ? Offline
                          ? Offline
                          A Former User
                          wrote on 2 Aug 2016, 13:22 last edited by
                          #12

                          It changes the system palette application wide, so the following will give you an orange rectangle:

                              Rectangle {
                                  SystemPalette { id: systemPalette }
                                  anchors.fill: parent
                                  color: systemPalette.button
                              }
                          
                          1 Reply Last reply
                          0
                          • R Offline
                            R Offline
                            Rouleaux
                            wrote on 2 Aug 2016, 13:31 last edited by
                            #13

                            I'm not sure we are discussing the same thing haha. I'd like for my Qt Application to fetch the systempalette of the OS, and apply that to my application.

                            ? 1 Reply Last reply 2 Aug 2016, 13:55
                            0
                            • V Offline
                              V Offline
                              Vicky Sharma
                              wrote on 2 Aug 2016, 13:42 last edited by Vicky Sharma 8 Feb 2016, 13:42
                              #14

                              @Rouleaux
                              I think there are some misunderstanding, it will be better if you post your code here so would be able to get that point on which this thread start and try to resolve too soon.

                              1 Reply Last reply
                              0
                              • R Rouleaux
                                2 Aug 2016, 13:31

                                I'm not sure we are discussing the same thing haha. I'd like for my Qt Application to fetch the systempalette of the OS, and apply that to my application.

                                ? Offline
                                ? Offline
                                A Former User
                                wrote on 2 Aug 2016, 13:55 last edited by
                                #15

                                @Rouleaux Oh, I think I misunderstood your intentions completely. So your actually want all your controls to look natively?

                                R 1 Reply Last reply 2 Aug 2016, 14:06
                                0
                                • R Offline
                                  R Offline
                                  Rouleaux
                                  wrote on 2 Aug 2016, 13:56 last edited by
                                  #16

                                  @Vicky-Sharma Yes, sorry, that might clear things up.

                                  import QtQuick 2.7
                                  import QtQuick.Window 2.2
                                  import QtQuick.Controls 2.0
                                  
                                  Window {
                                      visible: true
                                      width: 640
                                      height: 480
                                      title: qsTr("Hello World")
                                  
                                      Button {
                                          id: button1
                                          x: 8
                                          y: 8
                                          text: qsTr("Nicotine Base")
                                      }
                                  }
                                  
                                  

                                  This is my QML. I'd like to know wether there is an option to provide the systemtheme (mine for example is BreezeDark), but then applicationwide. Now I have to apply SystemPalette to every single element, but I suppose there must be an easier way right?

                                  1 Reply Last reply
                                  0
                                  • ? Offline
                                    ? Offline
                                    A Former User
                                    wrote on 2 Aug 2016, 14:00 last edited by
                                    #17

                                    Ok, so for natively looking widgets you'll need

                                    • QT += widgets in your *.pro file
                                    • QApplication in main.cpp (not QGuiApplication)
                                    • QtQuick.Controls 1 (not 2)

                                    E.g.:

                                    main.cpp

                                    #include <QApplication>
                                    #include <QQmlApplicationEngine>
                                    
                                    int main(int argc, char *argv[])
                                    {
                                        QApplication app(argc, argv);
                                        QQmlApplicationEngine engine(QUrl(QLatin1String("qrc:/main.qml")));
                                        return app.exec();
                                    }
                                    

                                    main.qml

                                    import QtQuick 2.7
                                    import QtQuick.Controls 1.4
                                    
                                    ApplicationWindow {
                                        visible: true
                                        width: 640
                                        height: 480
                                        title: qsTr("Hello World")
                                    
                                        Button {
                                            text: "Exit"
                                            anchors.centerIn: parent
                                            onClicked: Qt.quit()
                                        }
                                    }
                                    
                                    1 Reply Last reply
                                    0
                                    • ? A Former User
                                      2 Aug 2016, 13:55

                                      @Rouleaux Oh, I think I misunderstood your intentions completely. So your actually want all your controls to look natively?

                                      R Offline
                                      R Offline
                                      Rouleaux
                                      wrote on 2 Aug 2016, 14:06 last edited by Rouleaux 8 Feb 2016, 14:07
                                      #18

                                      @Wieland Shoot, I've just started using QtQuick.Controls 2.0..

                                      ? 2 Replies Last reply 2 Aug 2016, 14:09
                                      0
                                      • V Offline
                                        V Offline
                                        Vicky Sharma
                                        wrote on 2 Aug 2016, 14:07 last edited by
                                        #19

                                        @Rouleaux
                                        unfortunately i don't have 5.7 but i checked on 5.6 and rewrite few thing, you may check too as well as "Wieland" is also post write one check and revert if any error.
                                        import QtQuick 2.5
                                        import QtQuick.Window 2.2
                                        import QtQuick.Controls 1.4

                                        Window {
                                        visible: true
                                        width: 640
                                        height: 480
                                        title: qsTr("Hello World")

                                        Button {
                                            id: button1
                                            x: 8
                                            y: 8
                                            text: qsTr("Nicotine Base")
                                        }
                                        

                                        }

                                        1 Reply Last reply
                                        0
                                        • R Rouleaux
                                          2 Aug 2016, 14:06

                                          @Wieland Shoot, I've just started using QtQuick.Controls 2.0..

                                          ? Offline
                                          ? Offline
                                          A Former User
                                          wrote on 2 Aug 2016, 14:09 last edited by
                                          #20

                                          @Rouleaux I thought you were only complaining about the white button text, because, yes, it actually shouldn't use the system palette at all, unless you add support for native widgets as described above. sry! =)

                                          1 Reply Last reply
                                          0

                                          1/22

                                          2 Aug 2016, 11:12

                                          • Login

                                          • Login or register to search.
                                          1 out of 22
                                          • First post
                                            1/22
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved