c++ - 如何在 QTreeWidget 中找到选定的项目?

标签 c++ qt events kde-plasma 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();
    }
 }

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

最佳答案

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

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

会给你选择的项目。

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

关于c++ - 如何在 QTreeWidget 中找到选定的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/334952/

相关文章:

未启用 qtcreator 示例

c++ - 让子窗口继承父背景颜色?

c++ - 如何在子目录中生成带有源代码的 Makefile?

c++ - OpenGL 3.0 不能在 Windows 上使用 Qt

c++ - Qt 基类函数定义

jQuery 计时器可以在时间 x、时间 y、时间 z 上触发事件吗?

docker - 如何从 Docker 容器获取主机的 udev 事件?

javascript - : jQuery. live() 或内联事件属性哪个性能更高?

c++ - OpenCV:带有 Alpha channel 的 PNG 图像

c++ - 在引用上调用虚函数