禁用Qt安装程序框架中的本机“下一步”按钮

Gri*_*ory 5 c++ qt qt-installer qscript

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

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

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

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

Qt安装程序框架具有本机许可证检查页面,该页面带有我需要的“下一步”按钮逻辑,但是我没有找到任何手动完成此操作的示例。(许可证页面有效,因为它是默认的许可证页面,而且据我所知是框架内部的逻辑)。

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

小智 5

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

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


Gri*_*ory 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,您需要更改installer.value用户完成所需操作的时间。