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 クラスが既に を通じて登録されていると思っていましたが、そうではありません:を返すことで失敗します。繰り返しますが、すべてを登録する初期化関数呼び出しが欠落していますか?QUILoaderQStandardItemModelqRegisterMetaType()QMetaType::type("QStandardItemModel")UnknownType