QT declarative UI 初探(二)

洛欣發表於2010-05-18

說明一下,我的作業系統是win7 64位。

接上文,兩個疑惑讓我很鬱悶,有種雲深不知處的感覺。於是繼續翻閱文件,經過幾番查詢,我只好確定qml.exe就是文件中所提到的qmlviewer。對於第二個疑問,繼續學習。

首先,讀到這樣一段文件(位置QtDeclarative Module):

To include the definitions of the module’s classes, use the following directive:

 #include 

To link against the module, add this line to your qmake .pro file:

 QT += declarative

For more information on the Qt Declarative module, see the Declarative UI documentation.

然後,經過我不懈的努力,在examples/declarative/objectlistmodel 這個示例中找到了線索:

objectlistmodel的pro檔案如下(省略無關內容):

TEMPLATE = app
TARGET = objectlistmodel
QT += declarative

# Input
SOURCES += main.cpp \
           dataobject.cpp
HEADERS += dataobject.h
RESOURCES += objectlistmodel.qrc

objectlistmodel的main.cpp檔案:

#include

#include
#include
#include
#include
#include

#include “dataobject.h”

/*
   This example illustrates exposing a QList as a
   model in QML
*/

int main(int argc, char ** argv)
{
    QApplication app(argc, argv);

    QDeclarativeView view;

    QList dataList;
    dataList.append(new DataObject(“Item 1″, “red”));
    dataList.append(new DataObject(“Item 2″, “green”));
    dataList.append(new DataObject(“Item 3″, “blue”));
    dataList.append(new DataObject(“Item 4″, “yellow”));

    QDeclarativeContext *ctxt = view.rootContext();
    ctxt->setContextProperty(“myModel”, QVariant::fromValue(dataList));

    view.setSource(QUrl(“qrc:view.qml”));
    view.show();

    return app.exec();
}

看到了吧,原來是用QDeclarativeView這個東東來裝載ui的。。。

哈哈,於是我們可以自己來寫一個app,把demos/declarative/twitter這個demo給編譯成一個exe檔案了。

下面是我的main中的程式碼:

 QApplication a(argc, argv);

    QDeclarativeView vi;
    vi.setSource(QUrl(“twitter.qml”));
    vi.setResizeMode(QDeclarativeView::SizeRootObjectToView);
    vi.show();
    return a.exec();

ok,第一步我們終於邁出了。下面我們就可以開始慢慢享受qml的滋味了。。。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22785983/viewspace-662977/,如需轉載,請註明出處,否則將追究法律責任。

相關文章