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?
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).
Using the itemClicked() signal will miss any selection changes made using the keyboard. I'm assuming that's a bad thing in your case.
you can simply use this :
QString word = treeWidget->currentItem()->text(treeWidget->currentColumn());
to get your text in the variable word.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With