QJSEngine
アプリケーションをスクリプト可能にするために を使用しています。JavaScript 側でユーザー インターフェイスを変更できるようにしてほしい。現在の主な問題は、JavaScript から Qt API にアクセスすることです。
ウィジェットを作成するために、以下createWidget()
を使用するラッパーを追加しましたQUILoader
。
// JavaScript
var w = helpers.createWidget("QPushButton");
// C++
QJSValue helpers::createWidget(QString type)
{
QUILoader ld;
return engine.newQObject(ld.createWidget(type));
}
からのすべての列挙型も登録しました。これにより、 からqt_getQtMetaObject()
の名前空間レベルの列挙型がすべて処理されるようqnamespace.h
です。ただし、パブリック API の一部のようには見えません。
私は本当にこれを手動で行うことになっていますか、それとも何か不足していますか? registerAllTheThings()
Qt API を利用できるグローバルQt
オブジェクトを作成する関数はありませんか?
そうでない場合は、問題があります。で を作成できますが、 などの他のオブジェクトを作成する方法が見つかりませんでしQWidget
た。私はすべての Qt クラスが既に を通じて登録されていると思っていましたが、そうではありません:を返すことで失敗します。繰り返しますが、すべてを登録する初期化関数呼び出しが欠落していますか?QUILoader
QStandardItemModel
qRegisterMetaType()
QMetaType::type("QStandardItemModel")
UnknownType