QTreeWidget;在 QTree 中选择多个项目时禁用 ui 功能

Posted

技术标签:

【中文标题】QTreeWidget;在 QTree 中选择多个项目时禁用 ui 功能【英文标题】:QTreeWidget; Disabling ui Features when multiple Items are selected in QTree 【发布时间】:2012-01-30 23:35:30 【问题描述】:

我是一名学生程序员,我正在使用 Qt 构建一个 GUI 来工作,我遇到了各种各样的问题。在我的主界面中,我有一个保存数据的 QTreeWidget。同样在这个 GUI 中,我有按钮编辑、复制和删除,它们已经透视地连接到功能。我希望在选择多个项目时禁用编辑按钮。这是我遇到问题的地方。我认为执行此操作的最佳方法(我再次成为学生)将是某种类型的连接语句,但我一直在查看 the Qt Documentation for this widget 并且找不到任何似乎适合此的方法。我希望有经验的人能够为此提供一些指导。

我想知道我是否应该/可以使用

void QTreeWidget::itemSelectionChanged () [signal]

如果我可以使用这个信号,请说明一下,因为我在这里打了一个空白,因为我不知道从哪里开始将它与多个被选中的项目联系起来。

【问题讨论】:

【参考方案1】:

是的,这是正确的信号。例如,这里是您问题的插槽的简单实现:

void disableItems() 

    QList<QTreeWidgetItem*> selection = treeWidget->selectedItems();
    if(selection.size() > 1) 

        //disable the gui items here

     else  

        //maybe reenable items otherwise
    

【讨论】:

太棒了!我想我只是在那里打了一个作家街区;在整个过程中,我一直专注于寻找我真正忽略的信号,只是创建了一个评估函数。感谢您的帮助!【参考方案2】:

我认为您不能仅在 QtDesigner 中完成,如果您正在尝试这样做的话。 您可以定义自己的插槽来处理 itemSelectionChanged 信号。在该插槽中,您可以使用 QTreeWidget 的 selectedItems 方法来检查所选项目的数量并基于此启用/禁用按钮。

【讨论】:

以上是关于QTreeWidget;在 QTree 中选择多个项目时禁用 ui 功能的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 QTreeWidget 在 <list> 中的 <item>

QTreeWidget中项目周围的选定效果

7.6.3 QTreeWidgetItem类函数介绍

PyQt4 中的多列(可能使用 QTreeWidget)

在 PyQt QTreeWidget 中移动节点位置

QTreeWidget 选择第一项