В моем приложении Qt все элементы управления диалогового окна доступны для сценариев, использующих QtScript.Для этого я использую метод newQObject QScriptEngine, например:
QScriptValue btn = scriptEngine->newQObject(okBtn, QScriptEngine::QtOwnership);
controls.setProperty("okButton", btn, QScriptValue::ReadOnly);
Например, теперь я могу сделать это в скрипте:
dialog.controls.okButton.setEnabled(false);
Это прекрасно работает, насколько вызванный метод( setEnabled ) опубликованного элемента управления ( okButton ) помечается как открытый слот в классе объектов.К сожалению, многие из методов, которые я хочу вызывать из скрипта, определены только в обычной public scope.
Один из способов решить эту проблему - получить новый класс из каждого пользовательского интерфейса Qt.элемент, который переопределяет эти методы в качестве открытых слотов.Но это подразумевает большие накладные расходы на кодирование и обслуживание, что нежелательно в этой ситуации.
Есть ли способ указать обработчику сценариев сделать обычные общедоступные функции доступными по умолчанию?