Tôi đang phát triển một ứng dụng máy tính với PySide và tôi đang sử dụng QTableWidget. Giả sử bảng của tôi có 3 cột, nhưng dữ liệu chúng chứa rất khác nhau, giống như (đối với mỗi hàng) một câu dài trong cột đầu tiên, sau đó là số có 3 chữ số trong hai cột cuối cùng. Tôi muốn để đổi kích thước bảng của tôi để điều chỉnh kích thước của nó thành dữ liệu hoặc ít nhất để có thể để đặt kích thước cột là (nói) 70/15/15% dung lượng có sẵn.PySide - PyQt: Làm thế nào để thiết lập chiều rộng cột QTableWidget như tỷ lệ của không gian có sẵn?
Cách tốt nhất để làm điều này là gì?
Tôi đã thử table.horizontalHeader().setResizeMode(QHeaderView.Stretch)
sau khi đọc this question nhưng nó làm cho 3 cột có cùng kích thước.
Tôi cũng đã thử table.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents)
nhờ Fabio 's comment nhưng không lấp đầy tất cả dung lượng trống khi cần.
Cả Interactive
, Fixed
, Stretch
, ResizeToContents
từ QHeaderView documentation dường như để cho tôi những gì tôi cần (xem chỉnh sửa thứ hai).
Bất kỳ trợ giúp nào sẽ được đánh giá cao, ngay cả khi nó là dành cho Qt/C++! Cảm ơn nhiều.
EDIT: tôi thấy loại một cách giải quyết nhưng nó vẫn không phải những gì tôi đang tìm kiếm:
header = table.horizontalHeader()
header.setResizeMode(QHeaderView.ResizeToContents)
header.setStretchLastSection(True)
Sẽ tốt hơn nếu có tồn tại một phương pháp setStretchFirstSection
, nhưng tiếc là có không dường như không phải là một.
EDIT 2:
Điều duy nhất có thể được sửa đổi trong bảng là cột cuối cùng, người dùng có thể nhập một số trong đó. Mũi tên màu đỏ biểu thị những gì tôi muốn có.
Đây là những gì xảy ra với Stretch
Đây là những gì xảy ra với ResizeToContents
Hãy thử QHeaderView.ResizeToContents thay vì QHeaderView.Stretch – Fabio
Công trình này hoạt động nhưng không hoàn toàn là những gì tôi đang tìm kiếm, vì với 'ResizeToContents', vì các cột của tôi không đủ lớn, chúng không lấp đầy khoảng trống. Tôi sẽ chỉnh sửa để nó trở nên rõ ràng hơn. – BusyAnt