2010-03-09 28 views
6

Tôi gặp một QTableView rằng có dữ liệu được nạp với một QStandardItemModel theo hình thứcThiết Tab Trình tự QTableView trong Qt 4.4

Parameter Value 

    X1   0.456 
    X2   0.123 
.... and so on. 

Bây giờ tôi phải thiết lập thuộc tính Tab thứ tự theo cách như vậy mà tôi có thể đi qua chỉ thông qua các giá trị chứ không phải thông số. tức là khi điều khiển ở trên 0.456 và nếu tôi nhấn phím 'Tab', nó phải chuyển tới 0.123 và không phải là X2 (hành vi mặc định). Ngoài ra, tham số cột đã tắt Trình kích hoạt Edt và tôi chỉ có thể thay đổi giá trị.

Tôi biết QWidget :: setTabOrder (QWidget *, QWidget *) nhưng kể từ khi tôi thiết lập dữ liệu thông qua QStandardItemModel làm thế nào tôi có thể đạt được thứ tự Tab mong muốn trong QTableView? Tôi đang sử dụng Qt 4.4 và Windows XP. Ngoài ra tôi đã không sử dụng thiết kế Qt để thiết kế các yếu tố giao diện người dùng. Mọi thứ chỉ thông qua mã.

Trả lời

2

Phân lớp QTableView và ghi đè khóaPressEvent. Kiểm tra khóa tab trong sự kiện, gọi cơ sở thực hiện khác. Nhận chỉ mục hiện được chọn từ mô hình lựa chọn của chế độ xem. Đặt edittrigger của khung nhìn thành CurrentChanged hoặc đặt trên QItemDelegate của riêng bạn để điều khiển thủ công.

2

Trên thực tế, keyPressEvent không được phát ra khi bạn đang chỉnh sửa, thay vào đó bạn phải thực hiện lại closeEditor và kiểm tra gợi ý. Nếu gợi ý là QAbstractItemDelegate :: EditNextItem thì thay đổi selectionModel :: currentIndex và sử dụng QTableView :: edit.

Các giải pháp khác chỉ có tác dụng khi bạn không chỉnh sửa, nhưng dù sao nó đã cho tôi một điểm khởi đầu vì vậy tôi cho nó bounty

+0

này cũng có thể giúp đỡ: [tùy chỉnh hành vi chỉnh sửa qtableview] (http : //www.hardcoded.net/articles/how-to-customize-qtableview-editing-behavior.htm) –

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