2011-12-28 15 views

Trả lời

3

Bạn có thể sẽ phải làm một trong 2 điều:

  1. Bạn sẽ phải phân lớp QItemSelectionModel và thực hiện các chức năng cho việc thêm và xóa chọn QModelIndex es để bạn chỉ thêm các mục từ 2 hàng với nó.
  2. Bạn có thể làm điều này bằng việc có một thực hiện tùy chỉnh cho tín hiệu bắt mà QItemSelectionModel phát ra như:

    connect(tableWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection &, QItemSelection &)), selectionHandler, SLOT(updateSelection(QItemSelection &, QItemSelection &)));

Các selectionHandler là đối tượng để kiểm tra các hàng và cột của QModelIndex mục trong QItemSelection và xóa tất cả các chỉ mục nằm ngoài phạm vi hàng mà bạn muốn người dùng giữ lại và sau đó:

selectionHandler->ignoreSelectionUpdateSignal(); 
tableWidget->selectionModel()->select(QItemSelection&); 
selectionHandler->acceptSelectionUpdateSignal(); 

ignoreaccept bạn cần đảm bảo rằng bạn không nhận được tín hiệu xử lý vòng lặp vô hạn selectionChanged.

+0

Được rồi, cảm ơn, tôi nghĩ rằng tôi sẽ chỉ đi theo một cách đơn giản hơn, chỉ cung cấp thông báo cho người dùng nếu họ chọn quá nhiều, nhưng điều đó không trả lời được câu hỏi của tôi. –