我使用Qt Designer来构建我的UI布局。在布局上,我有一个名为cb_fac_cd
的组合框。在我的代码中,我有一个函数,它将根据我正在尝试构建的列表自动构建一个组合框。我在数据库中定义了很多这些列表,这个函数吐出了一个QComboBox。
不幸的是,到目前为止我只使用此函数将cellWidgets添加到QTableWidgets。它在那里工作得很好。现在我想填充这个预先存在的组合框。
似乎很简单self.ui.cb_fac_cd = makeComboBox('FACILITIES')
不起作用。我可以看到该函数像往常一样返回QComboBox,但cb_fac_cd组合框仍然没有填充。
如何将返回的组合框复制或分配到Qt Designer中的一个版本?
我正在使用PyQt,但这不应该有任何区别。
答案 0 :(得分:1)
据我所知,你无法替换属于Qt UIC机制生成的.h文件的对象(虽然我现在无法100%确认)。
在这种情况下我通常做的是在ui文件中使用空布局,然后执行以下操作: (请注意,我使用的是Qt / C ++语法,因为我不知道pyqt语法,但我认为你会得到这个想法)
QComboBox* pNewComboBox = makeComboBox( "FACILITIES" );
ui.pComboBoxLayout->addWidget( pComboBox );
此外,如果您的程序可能,请考虑使用枚举而不是字符串作为您的makeComboBox函数。这通常更快更安全。
答案 1 :(得分:1)
听起来你应该
答案 2 :(得分:1)
您可以将模型从Ui更改为从其他组合框获得的模型:
tempCombo = makeComboBox( "FACILITIES" )
self.ui.cb_fac_cd.setModel(tempCombo.model())
但对于那部分:
我在数据库和此函数中定义了很多这些列表 吐出一个QComboBox。不幸的是,直到现在我才使用此功能添加 cellWidgets到QTableWidgets。
如果数据来自数据库,您可能需要查看QSqlRelationalTableModel以避免手动执行此操作。