Отключить встроенную кнопку Next в каркасе установщика Qt

Я должен отключить стандартную кнопку "Далее" на своей странице через файл installscript.qs.

Я могу отключить свою собственную кнопку (которую я создал в файле.ui) с помощью скрипта.qs следующим образом: widget.myButton.setEnabled(false);

Этот человек показывает, что родные кнопки представлены как перечисление, и я не могу отключить их таким же образом.

Страница руководства по сценариям контроллера показывает некоторые взаимодействия с собственными кнопками. подобно gui.clickButton(buttons.NextButton), Я прохожу весь объект gui человек и не нашел ничего полезного.

Каркас установщика Qt имеет собственную страницу проверки лицензии с нужной мне логикой кнопки Next, но я не нашел примеров, которые делают это вручную. (страница лицензии работает, потому что ее страница лицензии по умолчанию и ее логика внутри фреймворка, как я понимаю).

Наконец, я нашел метод isComplete(), который может быть полезен для меня, но он предназначен для C++ API, а не для qs. Так как же отключить нативную кнопку через файл installscript.qs?

2 ответа

На случай, если кто-то еще окажется здесь, я наконец нашел более чистое решение: динамический виджет имеет свойство complete это можно изменить, чтобы включить или отключить кнопку "Далее". Установите это false отключить кнопку.

Controller.prototype.DynamicMyWidgetCallback = function()
{
    var currentWidget = gui.currentPageWidget();
    if (currentWidget != null)
    {
        currentWidget.complete = false
    }
}

Единственное решение, которое я нашел, это звонок installer.setValue("canContinue" "false");

Затем подключите страницу введенного события, используя gui.pageById(QInstaller.TargetDirectory).entered. connect(Component.prototype.targetPageEntered);

В targetPageEntered проверьте нашу ценность:

Component.prototype.targetPageEntered = function () {
    if (installer.value("canContinue") != "true") {
        gui.clickButton(buttons.BackButton);
        QMessageBox.information("someid", "Installer", 
        "You must do smth to continue", QMessageBox.Ok);
    }
}

Конечно, вам нужно изменить installer.value когда пользователь выполнит необходимые действия.

Другие вопросы по тегам