2011-10-30 60 views
8

Tôi có một vài điều về QCompleter của QLineEdit Tôi quan tâm đến việc tùy chỉnh. Tôi muốn làm cho nó hoạt động tương tự như thanh địa chỉ/tìm kiếm trong Chrome.Làm cách nào để tùy chỉnh cửa sổ bật lên QCompleter trong PyQt?

  1. Làm cách nào để giới hạn số hàng được hiển thị? Ví dụ: ngay cả khi có 15 kết quả phù hợp, tôi chỉ muốn QCompleter hiển thị 5.
  2. Làm cách nào để thay đổi kích thước cửa sổ bật lên? Ví dụ, tôi muốn làm cho cửa sổ popup đẹp và ấm cúng. Theo ví dụ trên, tôi muốn cửa sổ bật lên thay đổi kích thước thành 5 hàng chính xác mà không hiển thị bất kỳ thanh cuộn xấu xí nào.
  3. Làm cách nào để di chuyển cửa sổ bật lên? Ví dụ, tôi muốn điều chỉnh vị trí thẳng đứng của cửa sổ bật lên sao cho nó hơi thấp hơn phụ huynh.
  4. Làm cách nào để định dạng các mục danh sách của cửa sổ bật lên được hiển thị? Ví dụ, tôi muốn in đậm phần của từ phù hợp.
+1

setMaxVisibleItems (5) –

+0

QCompleter :: setPopup (QAbstractItemView * sổ popup) –

Trả lời

5
  1. Để hạn chế số lượng hàng: thay đổi mô hình để a QStringListModel sử dụng QCompleter.setModel, và đặt số mục cố định trước khi cửa sổ bật lên được hiển thị. Đồng thời đảm bảo rằng maxVisibleItems được đặt phù hợp (mặc định là bảy).
  2. Cửa sổ bật lên sẽ đổi kích thước thành chính xác chiều cao tự động. Bạn có thể tính chiều rộng chiều rộng của cửa sổ bật lên bằng cách thêm cùng chiều rộng của lề (popup.width() - popup.viewport().width()), chiều rộng của khung (2 * popup.frameWidth()) và chiều rộng của chuỗi dài nhất (popup.fontMetrics().boundingRect(string).width()).
  3. Vị trí (và chiều rộng) của cửa sổ bật lên có thể được kiểm soát bằng cách chuyển một số thích hợp QRect đến QCompleter.complete.
  4. Định dạng của các mục trong danh sách có thể được kiểm soát bởi setting an item delegate trên cửa sổ bật lên. Xem this answer để biết ví dụ về đại biểu chi tiết văn bản. (Nhưng lưu ý rằng điều này sẽ ảnh hưởng đến cách tính chiều rộng của cửa sổ bật lên).
2

Mặc dù tôi chưa bao giờ thử cùng một tài liệu rõ ràng để sử dụng maxVisibleItems(int maxItem) để hạn chế số mục hiển thị.

và như với tùy biến của PopUp Window tôi điều bạn cần để tạo ra một lớp con của QAbstractItemView và vượt qua nó trên QCompleter::setPopup(QAbstractItemView * popup)

thiết setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)

+0

tôi đã cố gắng 'maxVisibleItems', và tôi không biết nếu đó là một vấn đề mac, nhưng nó không cư xử như tôi nghĩ. Tất cả nó là thay đổi kích thước cửa sổ popup (loại, nó không phải là chính xác ở tất cả) vì vậy bạn chỉ có thể thấy chúng ta hãy nói 5 mục. Tôi sẽ mong đợi một cửa sổ popup thay đổi kích thước * và * một cắt xén trong các mục danh sách popup quá. – c00kiemonster

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