2013-10-18 24 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