【问题标题】:Set QListWidget's items selection mandatory强制设置 QListWidget 的项目选择
【发布时间】:2016-11-24 05:08:27
【问题描述】:

我有一个 QWizardPage,其中有一个 QListWidget。我希望只有在 QListWidget 中至少选择了一项时才会启用下一个按钮。 我尝试使用 registerField(...) 并将其设置为强制,但它似乎没有做任何事情。 我还尝试将 registerField 命令中的属性更改为 ("selectedItems()") ,然后它卡在 disabled 上。

我真的不想为 QWizardPage 创建一个新的修改类并重新实现 isComplete()。有没有其他办法?

谢谢。

【问题讨论】:

    标签: python qt pyqt qlistwidget


    【解决方案1】:

    QListWidgets 有一个关于何时激活(选择)项目的信号。您可以将此信号连接到启用下一个按钮的插槽。

    你可以使用类似的东西

    QListWidget.itemActivated.connect(self.enable_button)
    

    在您的 enable_button 函数中,您可以启用按钮:

    next_button.setEnabled(True)
    

    这应该允许您在不重做任何 QWizardPage 内容的情况下完成此操作

    【讨论】:

    • 那行不通。我不能在属于 QWizard 的按钮上应用“setEnabled/setDisabled”。
    • 如果您发布您的代码,我们可能会为您提供更好的帮助
    • 我不认为整个setupUi 函数会让你很感兴趣。基本上,与QListWidget 相关的唯一内容是以下行:self.wizard_page_features.registerField('features*', self.features_list),它位于修改后的向导类的__init__ 函数上。顺便说一句:self.wizard_page_features 是 QWizardPage,其中有 QListWidget,self.features_list 是 QListWidget 本身。
    • 这是你建议的补充(对我不起作用):self.features_list.itemActivated.connect(self.enable_button)(在__init__)和def enable_button(self): self.button(self.NextButton).setEnabled(True)
    • 我认为问题在于 initializePage() 将 QListWidget 的 currentRow() 设置为-1,并且在绘制 gui 之后立即变为 0。由于值不同 - 它将该字段视为“已填充”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多