From 3da6eecd845a6dc39f95cddb03f0653d708448f5 Mon Sep 17 00:00:00 2001 From: Jos van den Oever Date: Thu, 7 Sep 2017 14:25:13 +0200 Subject: [PATCH] Choose between QQC2 styles --- demo/CMakeLists.txt | 2 +- demo/src/main.cpp | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt index 99961f8..7690568 100644 --- a/demo/CMakeLists.txt +++ b/demo/CMakeLists.txt @@ -31,7 +31,7 @@ if (Qt5Quick_FOUND) endif() if (Qt5QuickControls2_FOUND) add_definitions(-DQTQUICKCONTROLS2) -# list(APPEND DemoLibs Qt5::QuickControls2) + list(APPEND DemoLibs Qt5::QuickControls2) endif() if (Qt5Charts_FOUND) list(APPEND DemoLibs Qt5::Charts) diff --git a/demo/src/main.cpp b/demo/src/main.cpp index a704891..5d213b9 100644 --- a/demo/src/main.cpp +++ b/demo/src/main.cpp @@ -27,10 +27,11 @@ #ifdef QT_QUICK_LIB #include -#include #include -#include #include +#include +#include +#include #endif #include @@ -96,6 +97,27 @@ void copyWindowGeometry(const QRect& rect, QObject* c) { void createQtQuick(const QString& name, const QString& qml, Model* model, QWidget* widgets, const QString& initialTab) { + static QString qqc2style; + static bool blocked = false; + if (blocked) { + return; + } + blocked = true; + if (qqc2style.isNull() && name.startsWith("QtQuick Controls 2")) { + qqc2style = name.mid(19); + QQuickStyle::setStyle(qqc2style); + QStringListModel& styles = model->styles; + int i = 0; + while (i < styles.rowCount()) { + QString style = styles.data(styles.index(i)).toString(); + if (style.startsWith("QtQuick Controls 2") && style != name) { + styles.removeRows(i, 1); + } else { + ++i; + } + } + } + blocked = false; QQmlApplicationEngine* engine = new QQmlApplicationEngine(); QQmlContext* c = engine->rootContext(); c->setContextProperty("styles", &model->styles); @@ -136,7 +158,11 @@ QComboBox* createStyleComboBox(Model* model) { box->addItem("QtQuick"); #endif #ifdef QTQUICKCONTROLS2 - box->addItem("QtQuick Controls 2"); + for (auto style: QQuickStyle::availableStyles()) { + if (style != "Plasma") { // Plasma style is buggy + box->addItem("QtQuick Controls 2 " + style); + } + } #endif #ifdef KIRIGAMI2 box->addItem("Kirigami 2"); @@ -169,8 +195,8 @@ QStatusBar* createStatusBar(Model* model, QWidget* main, QComboBox* box, } main->setVisible(false); #ifdef QTQUICKCONTROLS2 - if (text == "QtQuick Controls 2") { - createQtQuick("QtQuick Controls 2", "qrc:///qml/demo-qtquick2.qml", + if (text.startsWith("QtQuick Controls 2")) { + createQtQuick(text, "qrc:///qml/demo-qtquick2.qml", model, box, initialTab); } else #endif