c++ - QComboBox动态项目列表

标签 c++ qt qcombobox

我有两个QTableWidget。我们称它们为 Tab1Tab2Tab1 的一列包含 QComboBoxes,其中它们的项目是来自 Tab2 的行。当 Tab2 的元素被修改(添加/删除/编辑)时,我希望所有 QComboBoxes 都更新。

Tab1概念

LineNo | Some Text   | Select       |
1      | QString     | QComboBox    |
2      | QString     | QComboBox    |
3      | QString     | QComboBox    |
       |     ...     |     ...      |         
n      | QString     | QComboBox    |

Tab2概念

LineNo | Some Text   |
1      | QString     |
2      | QString     |
3      | QString     |
       |     ...     |
n      | QString     |

目前QComboBoxe是这样填充的:

QStringList s; // List filled with data from Tab2
QTableWidget *tw = (QTableWidget*) ui->Tabspace->currentWidget()->childAt(10, 10);
QComboBox *names = new QComboBox();
names->addItems(s);
tw->setItem(row, 0, new QTableWidgetItem());
tw->setCellWidget(row, 0, names);

每次我向 Tab1 添加行时都会启动此代码

最简单的方法是在 Tab2 的项目内容发生变化时更改每个 QComboBox。我的问题是:

有没有更好的方法来实现它?也许有某种方法可以将指针传递给 addItems() 或只修改一个 QComboBox 并克隆它?

最佳答案

使用QComboBox::setModel()与所有组合框共享一个模型。在选项卡 2 中更改任何内容时,只需修改模型,组合框就会自动更新。 对于您的用例,它似乎是 QStringListModel是一个很好的模型,但如果需要,您当然可以使用更复杂的模型。

关于c++ - QComboBox动态项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22699694/

相关文章:

qt - 如何更改(删除)QListWidget 的选择/事件颜色

mysql - PYQT : qCombobox displaying Column "Name" but passing Column "ID"

c++ - 在 C++ 中查找函数的地址

qt - 一个 Action 的两个快捷方式

c++ - 如何使用 QList 跟踪子类的实例

c++ - QStyledItemDelegate : commit QComboBox value to model on click

c++ - QComboBox 和 HeaderItem

c++ - ifstream.eof() - 在实际结束之前到达文件末尾

c++ - 在调试中将 QUrl 可视化为 VS 中的字符串

c++ - 在 C++ 中使用 dlsym 加载共享对象函数