7

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

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

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

控制器脚本手册页显示了与本机按钮的一些交互。喜欢gui.clickButton(buttons.NextButton)。我浏览了整个 gui object man 并没有发现任何有用的东西。

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

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

4

2 回答 2

5

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

Controller.prototype.DynamicMyWidgetCallback = function()
{
    var currentWidget = gui.currentPageWidget();
    if (currentWidget != null)
    {
        currentWidget.complete = false
    }
}
于 2018-08-04T16:13:22.207 回答
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用户完成所需操作的时间。

于 2017-09-24T22:46:18.850 回答