Tôi mới sử dụng QT và tôi vừa mới quản lý công việc QTableView với mô hình của mình. Nó đã cố định 3 cột. Khi tôi mở một cửa sổ, nó trông ok nhưng khi tôi thay đổi kích thước cửa sổ, QTableView chính nó được thay đổi kích thước nhưng chiều rộng của cột vẫn giữ nguyên. Có cách nào tích hợp để làm cho nó hoạt động không? Tôi muốn cột để thay đổi kích thước để phù hợp với các cạnh của QTableView mỗi cửa sổ được thay đổi kích cỡ.Cột tự động thay đổi kích thước thành kích thước của QTableView
Trả lời
Có một cờ tiêu đề để đảm bảo cột cuối cùng của QTableView lấp đầy phụ huynh nếu được thay đổi kích thước. Bạn có thể đặt như sau:
table_view->horizontalHeader()->setStretchLastSection(true);
Tuy nhiên, điều đó không thay đổi kích thước các cột khác tương ứng. Nếu bạn muốn làm điều đó, bạn có thể xử lý nó bên trong resizeEvent của cha mẹ của bạn như vậy:
void QParent::resizeEvent(QResizeEvent *event) {
table_view->setColumnWidth(0, this->width()/3);
table_view->setColumnWidth(1, this->width()/3);
table_view->setColumnWidth(2, this->width()/3);
QMainWindow::resizeEvent(event);
}
Lớp QParent là phân lớp của QMainWindow.
Tôi chưa thử nghiệm phần thứ hai nhưng đầu tiên tôi đã làm việc, mặc dù tôi quyết định làm cho cửa sổ không thể thay đổi được (có ý nghĩa hơn đối với tôi) – khajvah
Để đặt độ rộng cột theo tỷ lệ, tôi thấy dễ nhất để ghi đè resizeEvent như được hiển thị, nhưng bằng cách phân lớp QTableView được đề cập, thay vì QMainWindow. – jtbr
Widgets QTableView, QTreeView và các lớp thừa kế của họ (ví dụ như QTableWidget) có này hai phương pháp hữu ích:
QHeaderView* horizontalHeader() const;
QHeaderView* verticalHeader() const;
Nếu bạn tài liệu mở cho một lớp QHeaderView, bạn sẽ tìm thấy phương pháp thiết lập xuất hiện và hành vi của tiêu đề hàng hoặc cột cho các chế độ xem mục. Bạn có thể giải quyết vấn đề của bạn bằng một trong những phương pháp:
void QHeaderView::stretchLastSection(bool stretch)
Như Davy Jones đề cập.Ví dụ:
QTableView *table = new QTableView(); table->horizontalHeader()->setStretchLastSection(true);
void QHeaderView::setResizeMode(ResizeMode mode)
Như chế độ bạn có thể đặt QHeaderView :: Stretch hoặc QHeaderView :: ResizeToContents.
Thật không may phương pháp này có một nhược điểm - sau khi áp dụng, bạn sẽ không thể thay đổi kích thước của cột (hoặc hàng) theo cách thủ công (trong GUI) hoặc theo lập trình.Ví dụ:
QTableView *table = new QTableView(); table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
Mã này đều stretchs mỗi cột để họ phù hợp với chiều rộng của bảng.
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
Documents:
- QHeaderView::setSectionResizeMode
- Xem thay đổi kích thước các chế độ here.
Tôi muốn hôn bạn ngay bây giờ, chỉ đùa thôi ;-) .. Tôi đã tìm kiếm quá lâu cho dòng này .. cảm ơn bạn –
Hoàn hảo ... Đây là giải pháp hoàn hảo cho vấn đề kéo dài/mở rộng TableView .. Thực sự cảm ơn nhiều.. – Maxx
- 1. Cách tự động thay đổi kích thước lưới khi biểu mẫu được thay đổi kích thước?
- 2. UIImageView: Thay đổi kích thước thành kích thước hình ảnh?
- 3. Tự động thay đổi kích thước hàng TableLayoutPanel khi cửa sổ được thay đổi kích thước
- 4. Chỉnh sửa kích thước tự động của Gridpanel khi thay đổi kích thước cửa sổ
- 5. Tự động thay đổi kích thước div dựa trên kích thước của cửa sổ trình duyệt
- 6. Cột có thể thay đổi kích thước
- 7. Tự động thay đổi kích thước phần tử với kích thước cửa sổ jquery
- 8. wxpython: tự động thay đổi kích thước ảnh tĩnh (staticbitmap) để vừa với kích thước
- 9. JQGrid: Thay đổi kích thước chiều rộng lưới sau khi đổi kích thước cột
- 10. Thay đổi kích thước GLKView
- 11. tự động thay đổi kích thước văn bản (cỡ chữ) khi thay đổi kích thước cửa sổ?
- 12. Biểu tượng JButton tự động thay đổi kích thước
- 13. C# Tự động đổi kích cỡ biểu mẫu thành kích thước của DataGridView
- 14. Khung nội tuyến Fancybox tự động thay đổi kích thước
- 15. Ngăn JList tự động thay đổi kích thước
- 16. Scrollable Composite - tự động thay đổi kích thước - swt
- 17. Thay đổi kích thước hình tự động trong matplotlib
- 18. HTML TextArea tự động thay đổi kích thước
- 19. CSS, tự động thay đổi kích thước div?
- 20. Tự động hoàn tất có thể thay đổi kích thước
- 21. Thay đổi kích thước khung UIWebView không thay đổi kích thước nội dung bên trong
- 22. Làm cách nào để tự động thay đổi kích thước div thành kích thước nội dung của nó khi nội dung của div đã thay đổi?
- 23. Thay đổi kích thước bitmap
- 24. Tự động thay đổi kích thước các yếu tố xoay để vừa với kích thước của thùng chứa
- 25. Kích thước của cột VARCHAR
- 26. Swing GroupLayout: Thay đổi kích thước và giới hạn kích thước thành phần
- 27. fullcalendar - thay đổi kích thước lịch trên cửa sổ thay đổi kích thước
- 28. Làm thế nào để đảm bảo các cột trong QTableView được thay đổi kích thước thành tối đa
- 29. Thay đổi kích thước bước của NumberPicker
- 30. Graphviz, thay đổi kích thước của cạnh
Bạn có luôn muốn độ rộng của cột giống nhau không?Nếu không, bạn có thể kéo dài chiều rộng của cột cuối cùng bằng cách gọi table-> horizontalHeader() -> setStretchLastSection (true); –