9

カスタマイズしたいQLineEditのQCompleterについていくつかあります。Chromeのアドレス/検索バーと同じように動作させたいです。

  1. 表示される行数を制限するにはどうすればよいですか?たとえば、15の一致がある場合でも、QCompleterに5を表示するだけにします。
  2. ポップアップウィンドウのサイズを変更するにはどうすればよいですか?たとえば、ポップアップウィンドウをきれいにぴったりとしたいと思います。上記の例のように、醜いスクロールバーを表示せずに、ポップアップウィンドウを5行に正確にサイズ変更したいと思います。
  3. ポップアップウィンドウを移動するにはどうすればよいですか?たとえば、ポップアップウィンドウの垂直位置を調整して、親ウィジェットの少し下になるようにします。
  4. 表示されたポップアップウィンドウのリストアイテムをフォーマットするにはどうすればよいですか?たとえば、一致する単語の部分を太字にします。
4

2 に答える 2

7
  1. 行数を制限するには: QCompleter.setModel を使用してモデルを QStringListModel に変更し ポップアップ 表示される前に項目の固定数を設定します。また、maxVisibleItemsが適切に設定されていることを確認します (デフォルトは 7)。
  2. ポップアップ ウィンドウは、正しい高さ に自動的にサイズ変更されます。ポップアップのpopup.width() - popup.viewport().width()は、余白の幅 ( ) 、フレームの幅 ( 2 * popup.frameWidth())、および最も長い文字列の幅( )を合計することによって計算できますpopup.fontMetrics().boundingRect(string).width()
  3. ポップアップの位置 (および幅) は、適切なQRectQCompleter.completeに渡すことで制御できます。
  4. リスト アイテムの形式は、ポップアップにアイテム デリゲートを設定することで制御できます。リッチテキスト アイテム デリゲートの例については、この回答を参照してください。(ただし、これはポップアップ幅の計算方法に影響することに注意してください)。
于 2011-10-31T16:39:27.263 に答える
2

maxVisibleItems(int maxItem)表示されるアイテムの数を制限するために使用する同じ The Documentation Clearly States を試したことはありませんが。

ポップアップウィンドウのカスタマイズと同様に、サブクラスを作成してQAbstractItemView渡す必要がありますQCompleter::setPopup(QAbstractItemView * popup)

設定setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff)

于 2011-10-30T17:17:10.917 に答える