26

私は私が使用QComboBoxして満たすものを持っていQStringます:

comboBox->addItem(someString);

GUIアプリケーションを起動するとQComboBox、最小のアイテムがはるかに大きい場合でも、の幅は常に70になります。QComboBoxたとえば、の幅を動的に設定するにはどうすればよいQStringですcomboBoxか?

編集:

さらにテストを行った結果、次の解決策が見つかりました。

// get the minimum width that fits the largest item.
int width = ui->sieveSizeComboBox->minimumSizeHint().width();
// set the ComboBoxe to that width.
ui->sieveSizeComboBox->setMinimumWidth(width);
4

3 に答える 3

15

Qt (4.6) のオンライン ドキュメントには、次のような記述がありますQComboBox

enum    SizeAdjustPolicy  { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }

私は提案します

  1. SizeAdjustPolicyが実際に使用されていることを確認する

  2. 列挙型を に設定しAdjustToContentsます。ファイルについて言及するときは.ui、デザイナーでそれを行うことをお勧めします。通常、デザイナーで行うことに関して、コンストラクターには何も凝っていないはずです。

于 2010-06-30T18:18:17.847 に答える
6

ドキュメントによると、デフォルトSizeAdjustPolicyAdjustToContentsOnFirstShowおそらくそれを表示してから入力していますか?

表示する前に最初に入力するか、ポリシーを に設定してみてくださいQComboBox::AdjustToContents

編集:

QComboBoxところで、適切なレイアウトになっていると仮定しています。QHBoxLayout、サイズのヒント/ポリシーが実際に使用されるようにします。

于 2010-06-30T17:38:12.450 に答える
6

コンボボックス自体のサイズを変更せずに、コンボボックスのドロップダウンメニューのサイズのみを最大のテキストに合わせて変更するソリューションを探していました。

あなたの提案 (@Linoriumz) は、解決策を見つけるのに役立ちました。ここにあります: cb と呼ばれるコンボボックスがあるとします:

C++:

width = cb->minimumSizeHint().width()
cb->view().setMinimumWidth(width)

PyQT :

width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)
于 2019-01-02T11:07:06.557 に答える