Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获取QListView中选定行的索引或字符串?_C++_Qt_Qlistview - Fatal编程技术网

C++ 如何获取QListView中选定行的索引或字符串?

C++ 如何获取QListView中选定行的索引或字符串?,c++,qt,qlistview,C++,Qt,Qlistview,不确定如何显示列表中单击的项目或索引 { ... nrow = 10; ncol = 1; /*create QListView */ m_listView = new QListView(this); m_listView->setGeometry(QRect(QPoint(0,100), QSize(100, 150))); connect(m_listView, SIGNAL(clicked(QModelIndex)), t

不确定如何显示列表中单击的项目或索引

{
...
    nrow = 10;     
    ncol = 1;

    /*create QListView */
    m_listView = new QListView(this);
    m_listView->setGeometry(QRect(QPoint(0,100), QSize(100, 150)));
    connect(m_listView, SIGNAL(clicked(QModelIndex)), this, SLOT(hItem()));

    QStandardItemModel *model = new QStandardItemModel( nrow, 1, this );

    //fill model value
    for( int r=0; r<nrow; r++ )
    {
        QString sstr = "[ " + QString::number(r) + " ]";
        QStandardItem *item = new QStandardItem(QString("Idx ") + sstr);
        model->setItem(r, 0, item);
    }
}

void MainWindow::hItem()
{
    m_txt1->setText(item@clicked);
}
{
...
nrow=10;
ncol=1;
/*创建QListView*/
m_listView=新的QListView(此);
m_listView->setGeometry(QRect(QPoint(0100),QSize(100150));
连接(m_listView,信号(点击(QModelIndex)),此,插槽(hItem());
QStandardItemModel*model=新的QStandardItemModel(nrow,1,this);
//填充模型值
对于(int r=0;rsetItem(r,0,项);
}
}
void主窗口::hItem()
{
m_txt1->setText(item@clicked);
}

QListView
发出的信号有一个
QModelIndex
对象作为参数。 编辑与信号签名匹配的插槽:
void main window::hItem(QModelIndex idx)


使用
QModelIndex
对象,您可以使用
column()
row()
检索单击的行。请参见此处:

您似乎知道足够多,可以意识到信号作为参数传递
QModelIndex
。只要让插槽实际接受即可。
QModelIndex
具有
行()
列()
data()
方法,以及其他方法。m_txt1->setText(QString::number(m.row(),'d',0));//有效……。但是m_txt2->setText(m.data());//失败
data()
返回一个QVariant。您可能需要类似于
setText(m.data().toString())
的多选项:listView->setElectionMode(qabstractemview::ExtendedSelection);m_txt1->setText(QString::number(m.row(),'d',0));//有效……。但m_txt2->setText(m.data());//失败