2013-10-18 25 views
5

在一个特定的小区用户点击获取数据其实我是新来的Qt是无法QMouseEvent匹配了QTableView中QTableView中:我怎样才能在使用鼠标

家伙请解决这一问题有所帮助。

+0

告诉我们你有什么试过,你的问题是什么? – RobbieE

+0

您是否尝试过使用[clicked](http://qt-project.org/doc/qt-5.0/qtwidgets/qabstractitemview.html#clicked)信号? – thuga

回答

8

下面是一个例子,说明如何在点击它时获得表格单元格的文本。假设某个MyClass类中定义了QTableView。你需要安装的clicked连接(你也可以使用doubleClickedpressed等信号也一样,这取决于你的目标)信号,并执行相应的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();   
    } 
} 
+0

上面的例子很好,谢谢你提供的解决方案 – ShivaPrasad

+0

@vahancho你能告诉我clicked(const QModelIndex&)和cellClicked(int row,int column)有什么区别吗?为什么不能有一个单一的API? –

+1

@XavierGeoffrey,不同之处在于这些信号分别在不同的类中声明:'QAbstractItemView :: clicked()'和'QTableWidget :: cellClicked()'。第一个信号可用于所有项目视图类,如treeview,tableview,listview,而第二个信号只用于表部件。另外,参数是不同的:有时候传递模型索引比行和列更方便,特别是对于有父类的树视图。 – vahancho