Bạn có thể sẽ phải làm một trong 2 điều:
- 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ó.
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();
ignore
và accept
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
.
Đượ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. –