c++ - 拖动鼠标时QTreeView selectedIndex问题

标签 c++ qt qtreeview mouseclick-event qt-signals

下面给出的代码片段用于获取 QTreeView 上的选定行(索引)并读取相关数据。

它工作正常。但是,如果我左键单击一行并将其拖到另一个索引中,该函数会输出第一次单击的索引,但我想在释放鼠标左键时读取该行的索引。

当鼠标点击被释放时,我需要使用 QTreeView 的什么信号来读取选定的索引?

Object::Oject(QVector<QPair<QString, QString> > allItems){ 

        treeView = new QTreeView(Dialog);
         treeView->setObjectName(QString::fromUtf8("listView"));
         treeView->setGeometry(QRect(0, 0, 221, 481));

         QStandardItemModel *standardModel = new QStandardItemModel ;
         rootNode = standardModel->invisibleRootItem();

         treeView->setIconSize(QSize(40,30));
         treeView->setDragEnabled(false);
         treeView->setHeaderHidden(true);

         treeView->setModel(standardModel);
         treeView->expandAll();


   QVector< QPair <QString, QString > >::Iterator it;
    for (it=allItems.begin(); it != allItems.end(); it++){
        nItem = new QStandardItem(QString("%1").arg(it->second));
        nItem->setEditable(false);
        nItem->setDragEnabled(false);
        rootNode->appendRow(nItem);
    }

  QObject::connect(treeView, SIGNAL( clicked(const QModelIndex &)), this, SLOT(getSelectedIndexFcn(const QModelIndex &)));
}

void Object::getSelectedIndexFcn(const QModelIndex &index){
    selectedIndexRow = index.row();
    selectedIndexIPaddr = index.data().toString();

}

最佳答案

您可以尝试使用 QTreeWidget 及其信号 itemEntered(QTreeWidgetItem*, int)itemSelectionChanged()

关于c++ - 拖动鼠标时QTreeView selectedIndex问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25042446/

相关文章:

c++ - x64 上 Boost 1.53 和 VS 2013 的链接器错误

c++ - 在 QGraphicsItem 中找到最大的 X pos 值

c++ - QTreeView 放置在 QDockWidget 中时不显示

python - 无法使用 QFileSystems 编辑 QTreeView 中的项目

c++ - QTreeView可以加入QDockWidget吗

c++ - 如何将 glm::vec4<float> 转换为 GLfloat*?

c++ - 在类型实例化期间强制触发 static_assert

c# - 确定谁正在访问 Windows 2008 R2 服务器/Windows 7 中共享文件夹上的文件

c++ - QTWebkit "headless"模式

xml - 使用 Qt DOM 更新 XML 文件