Qt Quick2 Material 深色主题外观 buggy/unreadable
Qt Quick2 Material Dark Theme looks buggy/unreadable
我按照 上的建议在我的应用程序中应用了 Material 深色主题:
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>
#include <QDebug>
int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
qputenv("QT_QUICK_CONTROLS_STYLE", QByteArray("Material"));
qputenv("QT_QUICK_CONTROLS_MATERIAL_THEME", QByteArray("Dark"));
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
还有我的 main.qml:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Button {
id: button
x: 145
y: 70
width: 151
height: 90
text: qsTr("Button")
}
RoundButton {
id: roundButton
x: 401
y: 120
text: "+"
}
CheckBox {
id: checkBox
x: 157
y: 297
text: qsTr("Check Box")
}
Slider {
id: slider
x: 345
y: 232
value: 0.5
}
DelayButton {
id: delayButton
x: 377
y: 344
text: qsTr("Delay Button")
}
Switch {
id: switch1
x: 151
y: 409
text: qsTr("Switch")
}
}
虽然默认 material 可以按预期工作,但如果我更改为 material 深色,它看起来像这样:
Material 深色看起来有问题:
我很确定它不应该看起来像这样。我是不是没安装什么东西,还是需要另外导入什么东西?
在 Windows 上使用 qtcreator,qml 对象只是随机不变的控件。
应该 与 Qt Quick 的 Window
一起工作。请为此创建一个错误报告。不过,使用 ApplicationWindow
确实有效。
我按照
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickStyle>
#include <QDebug>
int main(int argc, char *argv[])
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
qputenv("QT_QUICK_CONTROLS_STYLE", QByteArray("Material"));
qputenv("QT_QUICK_CONTROLS_MATERIAL_THEME", QByteArray("Dark"));
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
还有我的 main.qml:
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.5
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
Button {
id: button
x: 145
y: 70
width: 151
height: 90
text: qsTr("Button")
}
RoundButton {
id: roundButton
x: 401
y: 120
text: "+"
}
CheckBox {
id: checkBox
x: 157
y: 297
text: qsTr("Check Box")
}
Slider {
id: slider
x: 345
y: 232
value: 0.5
}
DelayButton {
id: delayButton
x: 377
y: 344
text: qsTr("Delay Button")
}
Switch {
id: switch1
x: 151
y: 409
text: qsTr("Switch")
}
}
虽然默认 material 可以按预期工作,但如果我更改为 material 深色,它看起来像这样:
Material 深色看起来有问题:
我很确定它不应该看起来像这样。我是不是没安装什么东西,还是需要另外导入什么东西?
在 Windows 上使用 qtcreator,qml 对象只是随机不变的控件。
应该 与 Qt Quick 的 Window
一起工作。请为此创建一个错误报告。不过,使用 ApplicationWindow
确实有效。