在Qt安装程序框架中禁用本机Next按钮

时间:2017-09-20 19:45:38

标签: c++ qt qt-installer qscript

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

我可以通过.qs脚本禁用我自己的按钮(我在.ui文件中创建),如下所示:widget.myButton.setEnabled(false);

This man显示本机按钮表示为枚举,我不能以相同的方式禁用它们。

Controller Scripting手册页显示了与本机按钮的一些交互。像gui.clickButton(buttons.NextButton)一样。我经历了整个gui对象的人,并没有找到任何有用的东西。

Qt安装程序框架有一个本机许可证检查页面,其中包含我需要的Next按钮逻辑,但我没有找到任何手动执行此操作的示例。 (许可页面工作,因为它的默认许可页面和我在框架内的逻辑)。

最后我found isComplete()方法对我有用,但它适用于C ++ API而不适用于qs。 那么如何通过installscript.qs文件禁用本机按钮?

2 个答案:

答案 0 :(得分:1)

万一其他人到了这里,我终于找到了一个更清洁的解决方案:动态小部件具有属性complete,可以更改该属性以启用和禁用“下一步”按钮。将其设置为false以禁用该按钮。

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

答案 1 :(得分:0)

我找到的唯一解决方案是致电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