我正在从数据库中检索一组结果,我想用数据库中的结果列填充QComboBox(QComboBox的每一行应该与数据库结果具有相同的列),之后我希望能够从QComboBox的一行检索特定列并在应用程序中进一步使用它。我在想是否可以将QTableView添加到QComboBox。我想这样做是因为我希望以一种方式为结果添加更多含义,即某些结果列只是普通数字而其他是描述信息。
我发现可以连接结果并填充QComboBox但是这将使每个行只有一个值,我必须爆炸字符串以获得需要使用的确切部分。
默认情况下弹出的弹出窗口是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中找到