2

QtDesignerを使用してUIレイアウトを作成します。レイアウトには、という名前のコンボボックスがありますcb_fac_cd。私のコードには、作成しようとしているリストに基づいてコンボボックスを自動的に作成する関数があります。私はこれらのリストをデータベースにたくさん定義していて、この関数はQComboBoxを吐き出します。

残念ながら、これまで私はこの関数を使用してcellWidgetsをQTableWidgetsに追加しただけでした。そこでは完璧に機能します。次に、この既存のコンボボックスにデータを入力します。

単純で self.ui.cb_fac_cd = makeComboBox('FACILITIES')はうまくいかないようです。関数が通常どおりQComboBoxを返すことがわかりますが、cb_fac_cdコンボボックスは入力されていないままです。

返されたコンボボックスをQtDesignerの1つのビルドにコピーまたは割り当てるにはどうすればよいですか?

私はPyQtを使用していますが、それで違いはありません。

4

3 に答える 3

1

私の知る限り、QtのUICメカニズムによって生成された.hファイルの一部であるオブジェクトを置き換えることはできません(ただし、現時点では100%を確認することはできません)。

このような場合に私が通常行うことは、uiファイルに空のレイアウトを設定してから、次のことを行うことです(pyqt構文がわからないため、Qt / C ++構文を使用していることに注意してください。ただし、アイディア)

QComboBox* pNewComboBox = makeComboBox( "FACILITIES" );
ui.pComboBoxLayout->addWidget( pComboBox );

さらに、プログラムで可能であれば、makeComboBox関数に文字列ではなく列挙を使用することを検討してください。これは通常、より速く、より安全です。

于 2011-08-30T15:32:47.367 に答える
1

どちらかが必要なようです

  1. makeComboBoxをpopulateComboBox(QComboBox * p)に変更し、レイアウト内のコンボボックスに渡して塗りつぶすか、
  2. QComboBoxを作成してレイアウトに動的に追加し、.uiから削除します
于 2011-08-30T15:33:35.293 に答える
1

モデルを自分のUiから他のコンボボックスから取得したモデルに変更できます。

tempCombo = makeComboBox( "FACILITIES" )
self.ui.cb_fac_cd.setModel(tempCombo.model())

しかし、その部分については:

私はこれらのリストをデータベースにたくさん定義していて、この関数はQComboBoxを吐き出します。残念ながら、これまで私はこの関数を使用してcellWidgetsをQTableWidgetsに追加しただけでした。

データがデータベースからのものである場合は、QSqlRelationalTableModelを調べて、手動で行うのを避けることをお勧めします。

于 2011-08-30T16:06:16.210 に答える