双击QTreeView应始终返回第一列值

双击QTreeView应始终返回第一列值,qt,qt5,qtreeview,Qt,Qt5,Qtreeview,我有我的QTreeView,其中选择了整行: ui->treeView->setSelectionBehavior (QAbstractItemView::SelectRows); …并已填写ID号说明。所有的结构都是一棵树。我可以单击它,并通过以下方式检索相应的选择: ui->lineEdit->setText( modelIndex.data(Qt::DisplayRole).toString() ); 我已经连接到: connect(ui->tre

我有我的QTreeView,其中选择了整行:

  ui->treeView->setSelectionBehavior (QAbstractItemView::SelectRows);
…并已填写ID号说明。所有的结构都是一棵树。我可以单击它,并通过以下方式检索相应的选择:

ui->lineEdit->setText( modelIndex.data(Qt::DisplayRole).toString() );
我已经连接到:

  connect(ui->treeView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(onSelectedTreeView(QModelIndex)));
当我单击一个ID号时,它工作正常,并且我的modelIndex.data()返回ID号

当我单击描述时,我的
modeleindex.data()
返回正确的描述(第二列)。但我想再次获得相应的ID号(第一列)


谢谢你的帮助。提前感谢。

您可以使用
同级(int行,int列)
方法
QModelIndex

在python中:

def onSelectedTreeView(index):
    firstColumnIndex=index.sibling(index.row(),0)
    print(firstColumnIndex.data())
我想你可以做到:

ui->lineEdit->setText(modelIndex.sibling(modelIndex.row(),0).data(Qt::DisplayRole).toString());

您可以将treeView
selectionBehavior
更改为
SelectItems
。然后使用index.row()和index.column()。。别忘了它总是从0开始

onSelectedTreeView()
{
    //Put all your selected indexes into QModelIndexList
    QModelIndexList _indexes = ui->treeView->selectionModel()->selectedIndexes();

    // For each loop for every selected index.. 
    foreach (QModelIndex index, _indexes)
    {

    //if your index data == 0 it means that you clicked into ID-number field.

   //So you can easly see which index you clicked with qdebug
   qDebug() << "Row = " << index.row() << "\t Column = " << index.column();

   // So if you want to get always index of first column(ID-Number) use QAbstractItemModel
   if(index.column().toInt() != 0 ) //if your index not equal to 0
   {
      const QAbstractItemModel* absModel = index.model();

      // change index of absModel from index.column() to 0;
     QModelIndex changedIndex = absModel->data(absModel->index(index.row(), 0), Qt::DisplayRole).toInt();

     qDebug() << "Row = " << changedIndex.row() << "\t Column = " << changedIndex.column();
   }

   }
}
onSelectedTreeView()
{
//将所有选定索引放入QModelIndexList
QModelIndexList_index=ui->treeView->selectionModel()->selectedindex();
//对于每个选定索引的每个循环。。
foreach(QModelIndex索引,_索引)
{
//若您的索引数据==0,则表示您点击了ID号字段。
//因此,您可以轻松查看使用qdebug单击的索引

qDebug()最好使用QabstracteModel。。