How can I find the selected item in a QTreeWidget?
Solution 1
Using the itemClicked() signal will miss any selection changes made using the keyboard. I'm assuming that's a bad thing in your case.
Solution 2
Dusty is almost correct. But the itemSelectionChanged signal will not tell you which item is selected.
QList<QTreeWidgetItem *> QTreeWidget::selectedItems() const
will give you the selected item(s).
So, connect a slot to the itemSelectionChanged signal, then call selectedItems() on the tree widget to get the selected item(s).
Solution 3
you can simply use this :
QString word = treeWidget->currentItem()->text(treeWidget->currentColumn());
to get your text in the variable word.
Solution 4
According to the documentation here it appears that you should connect the QTreeWidget itemSelectionChanged() signal to a slot in your class. That will tell you which QTreeWidgetItem was selected which is what I believe you want.
![JuanDeLosMuertos](https://i.stack.imgur.com/P1c23.jpg?s=256&g=1)
Comments
-
JuanDeLosMuertos almost 2 years
I have a class that inherits QTreeWidget. How can I find the currently selected row? Usually I connect signals to slots this way:
connect(myButton, SIGNAL(triggered(bool)), this, SLOT(myClick()));
However, I can't find anything similar for
QTreeWidget->QTreeWidgetItem
. The only way I found is to redefine the mousePressEvent of the QTreeWidget class like this: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(); } }
I didn't try it yet. Is the only solution or is there any easier way?
-
stephen over 15 yearsYes, you are correct. It even says so in the documentation that I linked to. Nice catch.
-
JuanDeLosMuertos over 15 yearsit's perfect, I only need to click on the QTreeWidget :)