c++ - QT QML 无法正确显示
问题描述
我对使用 QT 很陌生,并且在显示我在 .qml 文件中创建的应用程序窗口时遇到了问题。我使用来自 QT youtube 频道的教程作为起点。当我运行应用程序时,屏幕上确实出现了一个窗口,但是,它不是指定的尺寸,也没有反映 qml 中写入的内容(基于教程的结果)。我正在使用带有 QT 插件的 VS2017,并且有按钮和窗口可以使用 .ui 文件显示。我在这里的实施做错了什么?
qml:
import QtQuick 2.9
import QtQuick.Controls 2.3
import QtPositioning 5.12
import QtLocation 5.12
import QtQuick.Layouts 1.3
import QtQuick.Window 2.2
ApplicationWindow
{
id: root
width : 700
height : 700
visible : true
title: qsTr("Hello World")
Action
{
id: actionNew
text: qsTr("&New")
shortcut: StandardKey.New
icon.name: "document-new"
onTriggered: area.placeholderText = "To do = New"
}
Action
{
id: actionOpen
text: qsTr("&Open")
shortcut: StandardKey.Open
icon.name: "document-Open"
onTriggered: area.placeholderText = "To do - Open"
}
Action
{
id: actionSave
text: qsTr("&Save")
shortcut: StandardKey.Save
icon.name: "document-Save"
onTriggered: area.placeholderText = "To do - Save"
}
menuBar: MenuBar
{
Menu
{
title: "File"
MenuItem {action: actionNew}
MenuItem {action: actionOpen}
MenuItem {action: actionSave}
}
}
header: ToolBar
{
RowLayout
{
ToolButton {action: actionNew}
ToolButton {action: actionOpen}
ToolButton {action: actionSave}
}
}
TextArea
{
id: area
anchors.fill: parent
}
}
主.cpp:
#include <QtQuick/QQuickView>
#include <QtQuick/QQuickItem>
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QQuickView views;
views.setSource(QUrl(QStringLiteral("qrc:/QTKM/main.qml")));
views.show();
return a.exec();
}
解决方案
测试您的代码我看到出现了第二个空白窗口。
为了解决这个问题,我将主要内容更改为:
#include <QApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
使用QQmlApplicationEngine
而不是QQuickView
.
推荐阅读
- spring-boot - 无法定位平台:“Java SE 11”使用工具链:“JDK 8 (1.8)”
- sql - 错误:列实际上不存在?为什么?
- flutter - 如何在 Flutter 中使用 json_serializable 反序列化具有 id 的 Firestore 文档?
- python - 使用python修改路径名的问题
- python - 在 Python 中将非零列名转换为行
- callback - 回调:DAQmxRegisterDoneEvent() 和 DAQmxEveryNSamplesEvent 之间的区别
- powershell - 如何使用 powershell 脚本获取最后 15 分钟的格式化日志
- r - ggplotify 包中的函数 as.ggplot() 出现奇怪错误
- python - 使用 sklearn 模型作为深度学习模型的输入
- c++ - function in c++ why my compiler didn't recognize the error()