Standard colors in QtCreator (KDE)
-
wrote on 2 Aug 2016, 11:50 last edited by Rouleaux 8 Feb 2016, 11:51
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
-
wrote on 2 Aug 2016, 11:52 last edited by
Qt Quick Controls 2 was introduced with Qt 5.7.
-
wrote on 2 Aug 2016, 11:55 last edited by Rouleaux 8 Feb 2016, 12:01
I have made a new project with Qt 5.7, but it seems that I have just version
1.5
installed? I can't import2.0
either on Qt 5.7EDIT: I didn't realise that Qt Quick Controls was available for download via the Arch Repos. Thank you so much for solving this problem!
-
wrote on 2 Aug 2016, 12:09 last edited by Rouleaux 8 Feb 2016, 12:09
@Wieland
If I may hijack my own thread, is there a way to apply theSystemPalette
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")
-
wrote on 2 Aug 2016, 13:07 last edited by
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(); }
-
wrote on 2 Aug 2016, 13:19 last edited by
That code doesn't seem to change anything visually. Am I doing something wrong?
-
wrote on 2 Aug 2016, 13:22 last edited by
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 }
-
wrote on 2 Aug 2016, 13:31 last edited by
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.
-
wrote on 2 Aug 2016, 13:42 last edited by Vicky Sharma 8 Feb 2016, 13:42
@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. -
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.
wrote on 2 Aug 2016, 13:55 last edited by@Rouleaux Oh, I think I misunderstood your intentions completely. So your actually want all your controls to look natively?
-
wrote on 2 Aug 2016, 13:56 last edited by
@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? -
wrote on 2 Aug 2016, 14:00 last edited by
Ok, so for natively looking widgets you'll need
QT += widgets
in your *.pro fileQApplication
in main.cpp (notQGuiApplication
)- 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() } }
-
@Rouleaux Oh, I think I misunderstood your intentions completely. So your actually want all your controls to look natively?
wrote on 2 Aug 2016, 14:06 last edited by Rouleaux 8 Feb 2016, 14:07@Wieland Shoot, I've just started using QtQuick.Controls 2.0..
-
wrote on 2 Aug 2016, 14:07 last edited by
@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.4Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")Button { id: button1 x: 8 y: 8 text: qsTr("Nicotine Base") }
}
-
wrote on 2 Aug 2016, 14:09 last edited by
@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! =)
-
wrote on 2 Aug 2016, 14:12 last edited by
@Rouleaux said:
Shoot, I've just started using QtQuick.Controls 2.0..
No native widgets with Controls 2. You need to supply a custom style then (see your other thread).
-
wrote on 2 Aug 2016, 14:25 last edited by
@Wieland I understand now. Thank you very much for your help!
15/22