{ Qt5.0.2/QML/QtQuick2.0/C++ } 示例项目能否运行无误?

13

我的开发环境是Qt5.0.2 MinGW 32位

我正在寻找包含实际C++类或至少有一个main.cpp{ Qt5.0.2 / QML / QtQuick2.0 / C++ }代码项目示例(不是Qt Quick 1.0)。

我已经在网上搜索了所有可能的示例:

但它们要么太旧(Qt Quick 1.0),要么纯粹是QML + QtQuick 2.0,要么根本无法编译;或者如果它们可以编译,它们会显示空对话框(例如,在Nokia代码示例中的“Status Shout!”)。

非常感谢任何建议。


我测试了一些例子,其中有些可以工作。并非全部,但Qt在这方面有点慢,无论是QtQuick2的文档还是示例都还不完整。请记住,QuQuick1几乎完全与QtQuick2源代码兼容,因此旧资源非常适合学习。 - dtech
请问您能否推荐一些您认为有用的示例?我需要一个完整的项目,可以在 QML 中设置和获取属性和数据,最好是 Qt Quick 2.0 兼容的。 - iviv
顺便提一下,诺基亚的这些代码示例是针对塞班系统的,它们需要不同的组件,所以难怪它们对你不起作用。 - dtech
哦,我明白了 :) 我真的不需要Symbian。 - iviv
2个回答

16

关于QML的详细资源并不是很多,大部分都只是短小的片段和文档示例。这对新手来说是一个问题,因为这些材料并不能真正给出如何将实用的东西放在一起的想法。

对于全新的QtQuick2更是如此,即使是文档和许多官方示例也还不完整。我知道从经验上讲,跟随教程、打字、期望它能工作,并得到一些意想不到的东西,却不知道出了什么问题以及如何修复,这是多么令人沮丧。

话虽如此,在QtQuick1中有几个完整但平凡的游戏示例,这并不是一个很大的问题,因为QtQuick2元素是向后兼容的,代码将与QtQuick2一起工作而无需或只需进行很少的修改。

虽然官方示例偶尔会出现问题或不完整,但也可能会有所帮助,而且很快就会被修复(早该修复了):

最后但并非最不重要的是,来自Qt项目网站维基的QML片段:

编辑:另一个学习QML的好资源:http://qmlbook.org


唉,仍然没有包含我所需文件的完整项目。但从这里得到的答案来看,似乎真的没有与我的问题 {Qt5.0.2 / QML / QtQuick2.0 / C++} 匹配的示例项目(不是 .JS 代码!)来设置和获取属性。 - iviv

2
一个相当简单的示例:
主.cpp
#include <QGuiApplication>
#include <QQuickView>

int main(int argc, char** argv)
{
    QGuiApplication app(argc, argv);
    QQuickView view;
    view.resize(800, 480);
    view.setResizeMode(QQuickView::SizeRootObjectToView);
    view.setSource(QUrl("qrc:///foo.qml"));
    view.show();
    return app.exec();
}

foo.qml(作为资源捆绑在此处):

import QtQuick 2.0

Rectangle {
    color: "lightsteelblue"

    Text {
        anchors.centerIn: parent
        text: "Hello"
    }
}

1
OP说他正在寻找项目示例,而不是Hello World... - dtech
1
ddriver:对我来说,请求是任何实际编译/显示某些内容的东西。 - Frank Osterfeld
iviv:原则上您可以移动它,但是那样的话您就无法在堆栈上创建视图对象,因为当离开构造函数(或其他创建视图的方法)时,它会立即被销毁。仅在此情况下,在堆栈上创建小部件才有效,因为main()中的所有内容都与应用程序一样长久存在。 - Frank Osterfeld
@iviv - 你可以在主函数中开启一个新的线程,正如Slavik81所说,在Qt中UI始终是主线程。如果你需要进行大量计算,那么你可以创建一个工作线程,并从主线程中管理它,这样它就可以自由运行而不会锁定和阻塞UI。 - dtech
谢谢。这个例子对我很有帮助。 - Zane
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接