2011-06-29 7 views
1

私はQtでクイックプロジェクトを作成しました。これは、Qt作成者が開始されたときにウィザードの最初から選択されました。 Qt作成者がプロジェクトを作成します。メインプロジェクトにはqmlapplicationvierwerサブプロジェクトとqmlファイルがあります。新しいcppソースとヘッダーファイル(MainMenu.cppとMainMenu.h)をプロジェクトに追加し、main.qmlファイルのこれらのファイルから関数を呼び出したいと思います。 qmlapplicationviewerに新しいタイプを登録し、ManiMenuから関数を呼び出す方法は?Qtクイックプロジェクト - qmlファイルのcpp関数を呼び出す方法は?

qmlapplicationvierwerは数関数があります

はQApplicationアプリ(ARGC、ARGVを)

QmlApplicationViewer viewer; 
viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto); 
viewer.setMainQmlFile(QLatin1String("qml/PUTest/main.qml")); 
viewer.showExpanded(); 

return app.exec(); 

と:

viewer.addImportPath(const string &path); 

プロジェクトウィザードせずにプロジェクトを作成していないより良い方法はありますか?

おかげ

答えて

5

通常は、QMLだけのプロジェクトを作成するには、このウィザードを使用します。 QmlApplicationビューアは、バイナリが生成され、QMLファイルがロードされるように、QMLファイルを囲む軽量のC++ラッパーです。

自分でそれを行うために多くの魔法はありません、以下を参照してください

http://doc.qt.nokia.com/qt-maemo-4.7/qtbinding.html

#include <QApplication> 
#include <QDeclarativeView> 
#include <QDeclarativeContext> 

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

QDeclarativeView view; 
QDeclarativeContext *context = view.rootContext(); 
context->setContextProperty("backgroundColor", 
          QColor(Qt::yellow)); 

view.setSource(QUrl::fromLocalFile("main.qml")); 
view.show(); 

return app.exec(); 
} 

をそしてsetContextPropertyとすることができますcppを介した広告グローバルQMLタイプ...もちろん

ますQmlApplicationViewerも再利用できます。メインクラスQmlApplicationViewerはQDeclarativeViewから派生しているため、このクラスのコンテキストに直接アクセスできます。

したがって、上記の例のように、使用することが可能でなければなりません:

QDeclarativeContext *context = this.rootContext(); 
context->setContextProperty("backgroundColor", QColor(Qt::yellow)); 

どこかQmlApplicationViewerのcostructor中またはその後は、(それが動作しない場合は私に知らせて、今それをしようとしませんでした)。

+0

ありがとうございます:) – Robert

+1

次のステップは、これがあなたのために働いた場合の回答を受け入れることです:-) – Marco

関連する問題