禁用QT安装程序框架中的本机下一个按钮



我必须在我的自定义页面上通过installscript.qs文件禁用标准下一个按钮。

我可以通过.QS脚本禁用自己的按钮(我在.UI文件中创建的按钮): widget.myButton.setEnabled(false);

这个人表明,本机按钮表示为枚举,我不能将它们与它们相同的方式禁用。

控制器脚本手册页面显示了与本机按钮的一些交互。像gui.clickButton(buttons.NextButton)。我经历了整个gui对象的人,没有发现任何有用的东西。

QT安装程序框架具有我需要的Next按钮逻辑的本机许可检查页面,但是我还没有找到任何手动执行此操作的示例。(许可页面工作是因为其默认许可页面及其内部框架内的逻辑)。

最后,我找到了可能对我有用的ISComplete()方法,但它适用于C API,而不是QS。那么如何通过installscript.qs文件禁用本机按钮?

如果其他人在这里结束时,我终于找到了一个清洁的解决方案:动态窗口小部件具有属性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

最新更新