QTableView:当用户使用鼠标单击特定单元格时,如何获取数据?

16

实际上,我对Qt不太熟悉,无法将QMouseEventQTableview相匹配。

请帮忙解决这个问题。


请展示一下您尝试过的内容以及遇到的问题是什么? - RobbieE
你尝试过使用clicked信号吗? - thuga
1个回答

23

这是一个示例,演示如何在单击表格单元格时获取其文本。

假设有一个在某些类MyClass中定义的QTableView。您需要将clicked信号连接到自己的MyClass::onTableClicked()槽上,如下所示:

connect(tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(onTableClicked(const QModelIndex &)));

插槽实现:

void MyClass::onTableClicked(const QModelIndex &index)
{
    if (index.isValid()) {
        QString cellText = index.data().toString();        
    }
}
你还可以根据你的目的使用doubleClickedpressed或其他信号。

以上示例运行良好,感谢您提供的解决方案。 - ShivaPrasad Gadapa
@vahancho,你能告诉我clicked(const QModelIndex &)和cellClicked(int row, int column)之间的区别吗?为什么不能只有一个API? - jxgn
2
@XavierGeoffrey,区别在于这些信号声明在不同的类中:QAbstractItemView::clicked()QTableWidget::cellClicked()。第一个信号可以用于所有项视图类,如树视图、表视图、列表视图,而第二个信号仅适用于表格小部件。此外,参数也不同:有时传递模型索引比行和列更方便,特别是对于树视图,其中还有父级。 - vahancho
@vahancho,这对我不起作用,我使用了相同的信号,但插槽没有执行。 - AAEM
啊哈,我知道它出了什么问题了。我使用的指针m_table还没有被分配。我的意思是,在分配表之前,我已经使用了连接语句。所以现在它可以正常工作了。 - AAEM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接