如何移除带有按钮的底部面板?

问题描述

我能够在某种程度上基于 Qt Installer Framework 自定义我的安装程序。

我能够自动点击按钮进入下一页

gui.clickButton(buttons.NextButton)

隐藏后退按钮(通过删除前一页)甚至禁用下一个按钮

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

接下来我想做的是移除包含 NextQuit 按钮的底部面板。这可能吗?

enter image description here

解决方法

您可以在类的构造函数中使用下面的代码来删除按钮。如果您希望在用户按下时触发其他内容,请查看文档。

ui->buttonBox->clear();
,

在 C++ 世界中,每个 QWidget 都提供对其子项的访问。

https://doc.qt.io/qt-5/qobject.html#children

您可以通过霰弹枪爆炸 QObjectList *widgetList = findChildren();

在调试器中逐步查看每个孩子是什么

您正在寻找一个 buttonGroup 或 buttonBox。一旦你有了指向它的指针,你就可以简单地 ->hide()

如果您创建一个已知位于“底部面板”中但不在按钮中的 QPoint() 对象,则可以消除一些神秘感。

https://doc.qt.io/qt-5.14/qwidget.html#childAt-1

Qt 是开源的。你可以下拉代码

https://download.qt.io/archive/qt/

找到构造你想要的页面的源文件,并查看它的构造函数。这将告诉您按钮框/组是什么以及它是否有名称。

很可能有一些简单的东西,比如buttons.hide 或buttons.visible = false

我不使用 QML 或 JavaScript

我相信你的“按钮”来自 ButtonGroup https://doc.qt.io/qt-5/qml-qtquick-controls2-buttongroup.html

因此您只需要在该页面上找到分配给您的 ButtonGroup 的 ID,然后 buttonGroupId.visible = false

如果您需要真正的帮助,您必须发布一个链接到完整编译和运行的代码。您还需要指明您在哪个平台上。

进行更多挖掘后进行编辑:

您仍然需要通过一些 zip 文件或其他方式发布完整代码,但这里是文档路径。

https://doc.qt.io/qt-5/qml-qtquick-controls2-buttongroup.html#buttons-prop

https://doc.qt.io/qt-5/qml-qtquick-controls2-abstractbutton.html

https://doc.qt.io/qt-5/qml-qtquick-controls2-abstractbutton-members.html

当你一路追踪到 AbstractButton 时,你就会发现对你来说已经足够好的东西了。

父:项目

https://doc.qt.io/qt-5/qml-qtquick-item.html#parent-prop

如果buttons.NextButton.parent != null 那么你可以buttons.NextButton.parent.visible = false