以下を使用して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);
Qt(4.6)のオンラインドキュメントには、QComboBox
について書かれています。
enum SizeAdjustPolicy { AdjustToContents, AdjustToContentsOnFirstShow, AdjustToMinimumContentsLength, AdjustToMinimumContentsLengthWithIcon }
私は提案します
SizeAdjustPolicy
が実際に使用されていることを確認する
列挙型をAdjustToContents
に設定します。あなたが言及するように.ui
ファイルDesignerでそれを行うことをお勧めします。通常、Designerで行うことに関して、コンストラクターには特別なことは何もありません。
docs によると、デフォルトのSizeAdjustPolicy
はAdjustToContentsOnFirstShow
なので、おそらくそれを表示してからデータを入力していますか?
表示する前に最初にデータを入力するか、ポリシーをQComboBox::AdjustToContents
に設定してみてください。
編集:
ところで、私はあなたが適切なレイアウトでQComboBox
を持っていると仮定しています。 QHBoxLayout
、サイズのヒント/ポリシーが実際に使用されているようにします。
コンボボックス自体のサイズを変更せずに、コンボボックスのドロップダウンメニューのサイズを最大のテキストに合わせて変更するだけの解決策を探していました。
あなたの提案(@Linoliumz)は私が解決策を見つけるのに役立ちました。ここにあります:cbと呼ばれるコンボボックスがあるとしましょう:
C++:
width = cb->minimumSizeHint().width()
cb->view().setMinimumWidth(width)
PyQT:
width = cb.minimumSizeHint().width()
cb.view().setMinimumWidth(width)