在QML或c++, BB10上设计UI
Design UI on QML or C++, BB10
我需要写一个BB-10应用程序。应用程序可能有非常复杂的UI,动态页面等。我正在考虑编写应用程序逻辑(数据模型等)。在c++中。我应该在UI设计中使用QML吗?集成有多好、多灵活c++和QML之间的区别?我不会遇到一些问题吗?我的UI可能包含许多QML页面(或对话框,显示在导航窗格等),当用户在QML中单击某些操作时,我可能想调用一些c++代码或导航到其他QML页面等。谢谢你的帮助。
我对移动开发一无所知,但QML很好,应该使界面更容易维护,修改和移植到其他设备。
QML和c++的集成很容易,只要你使用好Qt框架,使用QObjects, Q_PROPERTY
和Q_INVOKABLE
方法…这真的很容易。
编辑:我必须补充,虽然,我没有发现从c++访问QML对象那么容易。这是因为QML在少数数据类型的层次结构中组织对象,您必须动态地发现子节点,使用findChild
或检查objectName
。
无论如何,由于QML允许绑定属性,您应该能够用您的数据创建一些c++类,并在UI上轻松访问它们;)
我也遇到过这样的情况,当您需要使用c++来控制应用程序时,qml做不到。最好的方式继承你的类由NavigationPane和把那里的逻辑添加你的第一页使用QmlDocument::create()
,如果你有一些页面旁边的导航使用表和添加一些方法到该类Q_INVOKABLE
和传递setContext这个类当你创建新的页面使用QmlDocument::create()
访问这些方法。最后永远不要忘记添加或处理OnTrasitionEnded(Page*)
信号来删除页面和释放内存
简短的回答:c++/QML集成非常好。c++有时可能很啰嗦,但在c++中没有什么是你不能做的。
即使用c++做所有的事情要快一点点。黑莓正在推动用QML/Javascript编写所有UI工作流的想法。
优势在于业务逻辑之间的清晰分离&应用程序流。QML的另一个优点是编写和维护的时间更短。不要忘记你可以在c++中创建新的QML对象。
onTriggered: {
var item = dataModel.data(indexPath);
if (item.count > 0) {
appLogic.updateFeed(item.id);
navPane.push(resultPage);
}
}
- 如何在MS Visual Studio 2019中运行QT UI
- 如何处理使用.ui文件生成的.h文件
- 根据变量使Qt UI中的复选框为已选中/未选中
- 一旦双簧管录制开始,主 UI 线程就会被阻止
- Qt Quick,如何更改 Ui 源代码?
- QWidget UI 在使用 QQuickWidget 时冻结
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- Qt - QQuickWidget setSource without freezing UI
- MFC/C++ ComboBox:禁用下拉列表关闭和打开(UI 冻结)的绘制
- Qt5 ui,多个窗口:如何从窗口 1 访问窗口 2 中的 UI 对象
- QtConcurrent - 在发布到 UI 线程的数千个结果中保持 GUI 响应
- 发出信号以从线程更新 UI
- 更好的文本UI调试C++器,如python的pudb
- 可以在JSON文件的帮助下在Qt中创建UI表单
- 在 ui 文件中隐藏 QTabWidget 中的单个选项卡窗格?
- 由于多个 *.ui 文件而导致的多个Ui_Dialog定义?
- 如何将 .ui 完全转换为 C++ 头文件和源文件
- CMake + Qt,moc 编译失败,无法实现 QMetaObject 方法(编译器找不到基本 ui 对象的标头?
- 如何创建一个接口,允许我访问C++中的按钮(和其他ui)函数,该函数是使用python中的MFC实现的
- 在QML或c++, BB10上设计UI