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

时间:2012-01-30 23:35:31

标签: c++ qt connect signals-slots qtreewidget

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

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

void QTreeWidget::itemSelectionChanged () [signal]

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

2 个答案:

答案 0 :(得分:1)

我认为你不能仅仅在QtDesigner中完成它,如果那是你想要做的。 您可以定义自己的插槽来处理itemSelectionChanged信号。在该插槽中,您可以使用QTreeWidget的selectedItems方法来检查所选项目的数量,并根据该项目启用/禁用按钮。

答案 1 :(得分:1)

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

void disableItems() {

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

        //disable the gui items here

    } else { 

        //maybe reenable items otherwise
    }
}