下面给出的代码片段用于获取 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/