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());//失败