2010-06-20 23 views
5

Tôi sử dụng QTableView + QStandardItemModel để hiển thị một số dữ liệu (dữ liệu được lưu trữ trong một số cấu trúc dữ liệu khác) và chế độ xem bảng này có thể sắp xếp.Tín hiệu sắp xếp QTableView?

Vì có thể sắp xếp được, khi sắp xếp mô hình này, tôi cũng cần sắp xếp thứ tự dữ liệu được lưu trữ. Tôi cố gắng thực hiện một khe cho tín hiệu sắp xếp, nhưng tôi không biết tín hiệu nào được phát ra khi nhấp vào tiêu đề để bắt đầu hành động sắp xếp.

Tôi đã thử tín hiệu được nhấp, nhưng nó chỉ được phát ra cho hàng dữ liệu chứ không phải cho headerData. Tôi nên làm gì nếu tôi muốn làm điều gì khác trong khi sắp xếp QtableView + QStandardItemModel?

Trả lời

6

Header của View có thể thu được bằng cách

QHeaderView * QTableView::horizontalHeader() const

Bây giờ với thu được QHeaderView, bạn có thể kết nối một slot vào tín hiệu,

void QHeaderView::sectionClicked (int logicalIndex) [signal]. 

Từ 4.5 tài liệu Qt, Tín hiệu này được phát ra khi một phần được nhấp. Chỉ mục logic của phần được chỉ định bởi logicalIndex.Lưu ý rằng tín hiệu SectionPressed cũng sẽ được phát ra.

Hy vọng điều đó sẽ hữu ích.

+0

đó là rất hữu ích, thanks a lot :) :) –

1

Header xem đề cập ở trên có tín hiệu sortIndicatorChanged(int, Qt::SortOrder) nên nó có thể là thông minh hơn để sử dụng nó

Ngoài ra, bạn có thể muốn có một cái nhìn vào QSortFilterProxyModel biết thêm chi tiết ở đây http://doc.qt.io/qt-4.8/qsortfilterproxymodel.html#details