首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QComboBox动态项目列表

QComboBox动态项目列表
EN

Stack Overflow用户
提问于 2014-03-27 21:34:42
回答 1查看 2.2K关注 0票数 0

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

Tab1概念

代码语言:javascript
复制
LineNo | Some Text   | Select       |
1      | QString     | QComboBox    |
2      | QString     | QComboBox    |
3      | QString     | QComboBox    |
       |     ...     |     ...      |         
n      | QString     | QComboBox    |

Tab2概念

代码语言:javascript
复制
LineNo | Some Text   |
1      | QString     |
2      | QString     |
3      | QString     |
       |     ...     |
n      | QString     |

目前,QComboBoxe的填充方式如下:

代码语言:javascript
复制
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并克隆它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-27 21:59:43

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22699694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档