我Qt 5.11.0在 Windows 下運行(我知道它很舊,但我無法升級那個嵌入式系統)。
出于某種原因,QML MenufromQtQuickControls1忽略其styleif app is a QGuiApplication,但如果它是 a QApplication(來自 QtWidgets)則有效。
我還注意到默認情況下QApplication使用樣式,而使用樣式而不是根本無法加載樣式。DesktopQGuiApplicationBaseDesktop
是否QtWidgets需要依賴才能QtQuickControls1正確加載樣式,還是我遺漏了什么?
為什么要QApplication改變 QML 樣式?
主檔案
#include <QtQml/qqmlapplicationengine.h>
#include <QtQml/qqmlcomponent.h>
#include <QtWidgets/QApplication>
int main(int argc, char ** argv) {
//QGuiApplication* app = new QApplication(argc, argv); //works
QGuiApplication* app = new QGuiApplication(argc, argv); //does not work
QQmlApplicationEngine engine;
engine.load(QUrl("file:///C:/main.qml"));
app->exec();
delete app;
return 0;
}
main.qml
import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 1.4
import QtQuick.Controls.Styles 1.4
Window {
visible: true
Column{
CheckBox { text: "checkbox"}
ComboBox { model: ["combobox"] }
Button { text: "button"}
Button {
text: "custom"
menu: Menu {
style: MenuStyle { frame: Rectangle { color: "yellow" } }
MenuItem{text: "menuitem"}
}
}
}
}
預期成績:
- 選單應該有黃色背景。
實際結果:

uj5u.com熱心網友回復:
我用 5.15.7 嘗試了你的代碼,無論我使用的是 QApplication 還是 QGuiApplication,都能看到黃色矩形。所以這可能是 5.11 版本中的一個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/489349.html
標籤:qt qml qtquickcontrols q应用
