如何在QTreeWidget中找到所选项?

Gia*_*rlo 5 c++ events qt kde treewidget

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

connect(myButton, SIGNAL(triggered(bool)), this, SLOT(myClick()));
Run Code Online (Sandbox Code Playgroud)

但是,我找不到类似的东西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();
    }
 }
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*dal 13

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

QList<QTreeWidgetItem *> QTreeWidget::selectedItems() const
Run Code Online (Sandbox Code Playgroud)

会给你所选的项目.

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


Par*_*tes 4

使用 itemClicked() 信号将错过使用键盘所做的任何选择更改。我认为这对你来说是一件坏事。