如何在QTreeWidget中找到所选项?

时间:2008-12-02 18:29:10

标签: c++ qt events kde treewidget

我有一个继承QTreeWidget的类。如何找到当前选定的行? 通常我会以这种方式将信号连接到插槽:

connect(myButton, SIGNAL(triggered(bool)), this, SLOT(myClick()));

但是,我找不到QTreeWidget->QTreeWidgetItem的类似内容。 我找到的唯一方法是重新定义QTreeWidget类的mousePressEvent,如下所示:

void MyQTreeWidget::mousePressEvent(QMouseEvent *e){
    QTreeView::mousePressEvent(e);
    const QModelIndex index = indexAt(e->pos());
    if (!index.isValid())
    {
    const Qt::KeyboardModifiers modifiers = QApplication::keyboardModifiers();
    if (!(modifiers & Qt::ShiftModifier) && !(modifiers & Qt::ControlModifier))
    clearSelection();
    }
 }

我还没试过。是唯一的解决方案还是有更简单的方法?

5 个答案:

答案 0 :(得分:12)

尘土飞扬几乎是正确的。但是itemSelectionChanged信号不会告诉您选择了哪个项目。

QList<QTreeWidgetItem *> QTreeWidget::selectedItems() const

将为您提供所选项目。

因此,将一个槽连接到itemSelectionChanged信号,然后在树窗口小部件上调用selectedItems()以获取所选项目。

答案 1 :(得分:3)

使用itemClicked()信号将错过使用键盘进行的任何选择更改。我认为在你的情况下这是件坏事。

答案 2 :(得分:3)

你可以简单地使用它:

QString word = treeWidget->currentItem()->text(treeWidget->currentColumn());

将文字输入变量词。

答案 3 :(得分:1)

根据文档here,您似乎应该将 QTreeWidget itemSelectionChanged() 信号连接到班级的插槽中。这将告诉你选择了哪个 QTreeWidgetItem ,这是我认为你想要的。

答案 4 :(得分:0)

ooops,我已经解决了这个问题:

connect(this,SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(mySlot()));

但感谢您的回复:D

相关问题