Как я могу найти выбранный элемент в QTreeWidget? - PullRequest
5 голосов
/ 02 декабря 2008

У меня есть класс, который наследует QTreeWidget. Как я могу найти выбранную строку? Обычно я подключаю сигналы к слотам так:

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

Однако я не могу найти ничего похожего на QTreeWidget->QTreeWidgetItem. Единственный найденный способ - переопределить mousePressEvent класса QTreeWidget следующим образом:

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 ]

12 голосов
/ 02 декабря 2008

Дасти это почти правильно. Но сигнал itemSelectionChanged не сообщит вам, какой элемент выбран.

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

даст вам выбранный пункт (ы).

Итак, подключите слот к сигналу itemSelectionChanged, затем вызовите selectedItems () в виджете дерева, чтобы получить выбранные элементы.

3 голосов
/ 06 апреля 2015

Вы можете просто использовать это:

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

чтобы получить ваш текст в переменном слове.

3 голосов
/ 05 декабря 2008

Использование сигнала itemClicked () пропустит любые изменения выбора, сделанные с помощью клавиатуры. Я предполагаю, что это плохо в вашем случае.

1 голос
/ 02 декабря 2008

Согласно документации здесь представляется, что вы должны подключить сигнал QTreeWidget itemSelectionChanged () к слоту в вашем классе , Это скажет вам, какой QTreeWidgetItem был выбран, что, как я полагаю, вы хотите.

0 голосов
/ 02 декабря 2008

упс, я решил просто с помощью этого:

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

однако спасибо за ответы: D

...