我正在从数据库中检索一组结果,我想用数据库中的结果列填充QComboBox(QComboBox的每一行应该与数据库结果具有相同的列),之后我想能够从QComboBox的一行检索特定列并在应用程序中进一步使用它。我在想是否可以将QTableView添加到QComboBox。我想这样做是因为我希望以一种方式为结果添加更多含义,即某些结果列只是普通数字而其他是描述信息。
我发现可以连接结果并填充QComboBox,但这会让每行只有一个值,我必须爆炸字符串才能获得所需的确切部分与...合作。
答案 0 :(得分:1)
默认情况下弹出的弹出窗口是QListView
,可以使用继承自QAbstractItemView
的任何对象更改此弹出窗口,在这种情况下,将使用QTableView
来使用它setView()
方法,单击时的结果应该返回所选行的项目,然后设置要在选中后显示的列将使用指示列位置的方法setModelColumn()
,但是在此之前,使用方法setModel()
将模型设置为QComboBox。
# my model
model = new QSqlTableModel;
model->setTable("person");
model->select();
# setModel
comboBox->setModel(model);
# select column
comboBox->setModelColumn(1);
QTableView *view = new QTableView(this);
comboBox->setView(view);
注意:模型设置为QComboBox,而不是QTableView。你也可能有QTableView的宽度问题,所以我们必须调整大小,在我的情况下使用以下内容:
view->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
view->setMinimumWidth(500);
完整示例可在以下link
中找到