Tôi đang cố gắng tự động thay đổi kích thước QTreeView
thành nội dung của nó. Đây là thiết lập của tôi: Tôi đang cố gắng tạo đầu công cụ "thông minh" là QWidget
với Qt.Tool | Qt.FramelessWindowHint
làm WindowFlags
, hoạt động độc đáo. Nó chứa một bố trí với một số nút (kích thước trong số đó là không đổi) và QTreeView
. Bây giờ, bất cứ khi nào các dòng được thêm vào mô hình của QTreeView
, thì QTreeView
sẽ tự động tăng kích thước của nó để tránh các thanh cuộn dọc.Làm cho QTreeView tự động thay đổi kích thước thành nội dung
Đặt QSizePolicy.Expanding
trên cả tiện ích mẹo công cụ và QTreeView
không thay đổi bất kỳ thứ gì - có thể tôi thiếu một số cờ bổ sung hoặc thứ gì đó ở đây.
Tôi cũng đã cố gắng sau, brute-force phương pháp:
class ToolTip:
def __init__(self):
...
self.itemView.setVerticalScrollMode(QAbstractItemView.ScrollPerPixel)
self.itemView.verticalScrollBar().rangeChanged.connect(self.resizeViewVertically)
def resizeViewVertically(self, min, max):
self.resize(self.width(), self.height() + max)
mà làm việc hầu hết thời gian, nhưng không phải lúc nào. Mỗi lần trong một thời gian (mỗi lần thứ hai, chính xác, nhưng tôi không biết nếu đó là trùng hợp hay không), bằng cách sử dụng mã này, khung nhìn sẽ thay đổi kích thước chính xác (nghĩa là tất cả nội dung phù hợp và sẽ không cần thiết cho thanh cuộn), nhưng thanh cuộn không biến mất, cho phép cuộn vào khoảng trống bên dưới dòng cuối cùng.