2011-10-30 21 views
8

Bir QLineEdit QCompleter için birkaç şey var, özelleştirmeyle ilgileniyorum. Chrome'daki adres/arama çubuğuna benzer davranmasını sağlamak istiyorum.PyQt'deki QCompleter açılır penceresini nasıl özelleştirebilirim?

  1. Görüntülenen satır sayısını nasıl sınırlayabilirim? Örneğin, 15 eşleşme olsa bile, yalnızca QCompleter'ın 5'i göstermesini istiyorum.
  2. Açılır pencereyi nasıl yeniden boyutlandırabilirim? Örneğin, pop-up penceresini güzel ve hoş bir hale getirmek istiyorum. Yukarıdaki örneğe göre, herhangi bir çirkin kaydırma çubuğu göstermeden, açılır pencerenin tam olarak 5 satıra yeniden boyutlandırılmasını istiyorum.
  3. Açılır pencereyi nasıl taşıyabilirim? Örneğin, açılır pencere penceresinin dikey konumunu, ana pencere öğesinin biraz altında olacak şekilde ayarlamak istiyorum.
  4. Gösterilen açılır pencerenin liste öğelerini nasıl biçimlendirebilirim? Örneğin, eşleşen kelimenin parçasını kalınlaştırmak istiyorum.
+1

setMaxVisibleItems (5) –

+0

QCompleter :: setPopup (QAbstractItemView * Popup) –

cevap

5
  1. set PopUp Pencere Ben şeyin özelleştirme gibi: hiç modelini değiştirmek QStringListModel QCompleter.setModel, ve açılır pencere görüntülenmeden önce sabit sayıda öğe ayarlayın. Ayrıca maxVisibleItems'un uygun şekilde ayarlandığından emin olun (varsayılan yedidir).
  2. Açılır pencere, otomatik olarak doğru yükseklik olarak yeniden boyutlandırılmalıdır. popup genişliği birlikte kenar (popup.width() - popup.viewport().width()), çerçevenin (2 * popup.frameWidth()) genişliği ve en uzun dizisinin (popup.fontMetrics().boundingRect(string).width()) genişliği, genişliği eklenmesiyle hesaplanabilmektedir.
  3. Pop-up'ın konumlandırılması (ve genişliği), bir uygun QRectQCompleter.complete'a geçirilerek kontrol edilebilir.
  4. Liste öğelerinin biçimi, açılır pencerede setting an item delegate ile denetlenebilir. Zengin metin öğesi temsilcisinin bir örneği için bkz. this answer. (Ancak bunun, popup genişliğinin nasıl hesaplanacağını unutmayın).
2

Yine de Aynı Belgeleri Denemedim Yine de, görünür öğe numaralarını kısıtlamak için maxVisibleItems(int maxItem) kullanın.

ve Sen QAbstractItemView bir alt sınıfı yapmak ve QCompleter::setPopup(QAbstractItemView * popup)

üzerine geçmesi gerekiyor satır sayısını sınırlamak için setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)

+0

Ben 'maxVisibleItems' denedim ve bir mac sorunu ise bilmiyorum ama düşündüğümden gibi davranmaz. Tüm yaptığı pop-up penceresini yeniden boyutlandırmak (bir çeşit, tam olarak değil), böylece sadece 5 madde diyelim. Bir açılır pencere boyutunu yeniden boyutlandırabilirim * ve * açılır liste öğelerinde de bir kırpma. – c00kiemonster

İlgili konular