2013-10-18 12 views
5

Trên thực tế tôi mới để Qt là không thể phù hợp với QMouseEvent QTableviewQTableView: Làm thế nào tôi có thể nhận được dữ liệu khi người dùng nhấp chuột vào một ô đặc biệt sử dụng chuột

guys xin vui lòng giúp đỡ trong việc giải quyết vấn đề này.

+0

Cho chúng tôi biết bạn đã thử những gì và vấn đề của bạn là gì? – RobbieE

+0

Bạn đã thử sử dụng tín hiệu [nhấp] (http://qt-project.org/doc/qt-5.0/qtwidgets/qabstractitemview.html#clicked) chưa? – thuga

Trả lời

8

Dưới đây là ví dụ về cách bạn có thể nhận được, ví dụ: văn bản của ô bảng khi nhấp vào văn bản đó. Giả sử một QTableView được xác định trong một số lớp MyClass. Bạn cần cài đặt kết nối của clicked (bạn có thể sử dụng cũng doubleClicked, pressed và các tín hiệu khác nữa, tùy thuộc vào mục tiêu của bạn) tín hiệu và thực hiện các onTableClicked() khe tương ứng cho nó, như hình dưới đây: thực hiện

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

Khe cắm:

void MyClass::onTableClicked(const QModelIndex &index) 
{ 
    if (index.isValid()) { 
     QString cellText = index.data().toString();   
    } 
} 
+0

Ví dụ trên là hoạt động tốt, cảm ơn bạn đã cung cấp giải pháp – ShivaPrasad

+0

@vahancho bạn có thể cho tôi biết sự khác nhau giữa nhấp chuột (const QModelIndex &) và cellClicked (int row, int column) không? Tại sao không thể có một API? –

+1

@XavierGeoffrey, sự khác biệt là các tín hiệu được khai báo trong các lớp khác nhau: 'QAbstractItemView :: click()' và 'QTableWidget :: cellClicked()' tương ứng. Tín hiệu đầu tiên có thể được sử dụng trong tất cả các lớp xem mục như treeview, tableview, listview, trong khi thứ hai chỉ dành cho các tiện ích bảng. Ngoài ra các đối số là khác nhau: đôi khi rất thuận tiện để chuyển một chỉ mục mô hình hơn hàng và cột, đặc biệt là đối với các lần xem trang, nơi cũng có cả một phụ huynh. – vahancho

Các vấn đề liên quan