2013-02-24 18 views
5

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.

Trả lời

0

Bạn có thể muốn tham khảo cách mặt hàng này hoạt động: http://ftp.ics.uci.edu/pub/centos0/ics-custom-build/BUILD/PyQt-x11-gpl-4.7.2/examples/layouts/flowlayout.py

Có thể cung cấp cho bạn một số gợi ý về những gì bạn cần. Bố trí của nó, bạn có thể thả vào một scrollwindow cho isntance, và khi cửa sổ chính được rsized, nó wiill đặt hàng lại tất cả các vật dụng bên trong để phù hợp với