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

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

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

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

Страница руководства по сценариям контроллера показывает некоторые взаимодействия с собственными кнопками. подобно 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
}
}
1

Другие решения

Единственное решение, которое я нашел, это звонок 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 когда пользователь выполнит необходимые действия.

0

По вопросам рекламы [email protected]