我有两个QTableWidget
。我们叫它们Tab1
和Tab2
。Tab1
的一列包含QComboBox
es,其中的项是来自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的项目内容更改时更改每个。我的问题是:
是否有更好的方法来实现这一点?也许有办法传递指向addItems()
的指针,或者修改一个QComboBox
并克隆它?
发布于 2014-03-27 13:59:43
使用QComboBox::setModel()与所有组合框共享一个模型。当更改选项卡2中的任何内容时,只需修改模型,组合框就会自动更新。对于您的应用程序来说,QStringListModel似乎是一个很好的模型,尽管您当然可以在需要时使用更复杂的模型。
https://stackoverflow.com/questions/22699694
复制