相关疑难解决方法(0)

C++应用程序中的QML,反之亦然

考虑一个简单的GUI显示相当复杂的计算输出的情况.

现在我想用QML编写一个漂亮的自定义GUI .
我还想在QT C++中编写我的后台应用程序.

我坐在QT文档的前面,想知道我
是否应该编写一个QML应用程序并以某种方式在其中嵌入我的C++类(这是绝对可能的)或者如果我
2)应该编写一个C++应用程序 并以某种方式嵌入QML GUI中的GUI并修改我的类的QML属性(这也是可能的)

我已经使用QT Widgets为GUI编写了C++中的所有内容.我只想将GUI移动到QML并保留C++类,即使我愿意重写GUI的接口.

可能的anser:

下面标记的解决方案建议保留C++类并通过SIGNALS和SLOTS专门连接GUI.所以基本上我最终得到了一个main.cpp,它实例化我的主工作类并显示如下的QML GUI:

QQuickView viewer;
viewer.setSource(QUrl("./qml/main.qml"));
viewer.show();
Run Code Online (Sandbox Code Playgroud)

然后我添加了myClass并给我一个对象来做连接:

MyClass myClass;
QQuickItem* item = viewer.rootObject();
QObject::connect(item, SIGNAL(buttonClicked()), &myClass, SLOT(mySlot()));
QObject::connect(&myClass, SIGNAL(mySignal(QVariant)), item, SLOT(updateGUI(QVariant)));
Run Code Online (Sandbox Code Playgroud)

在C++类中实现插槽和信号时,必须使用QVariant对象来传输数据.然后,QML文件实现SIGNALS,例如用于单击按钮和SLOTS以接收要显示的数据.

这正是我所希望的.我的非GUI代码的唯一变化是通过SIGNALS和SLOTS进行所有交互.现在我甚至可以为我的应用程序使用两个GUI(QML/Widgets).

c++ qt qml

10
推荐指数
1
解决办法
2288
查看次数

标签 统计

c++ ×1

qml ×1

qt ×1