将QTableView添加到QComboBox

时间:2017-09-17 14:49:54

标签: c++ qt qt5 qtableview qcombobox

我正在从数据库中检索一组结果,我想用数据库中的结果列填充QComboBox(QComboBox的每一行应该与数据库结果具有相同的列),之后我想能够从QComboBox的一行检索特定列并在应用程序中进一步使用它。我在想是否可以将QTableView添加到QComboBox。我想这样做是因为我希望以一种方式为结果添加更多含义,即某些结果列只是普通数字而其他是描述信息。

我发现可以连接结果并填充QComboBox,但这会让每行只有一个值,我必须爆炸字符串才能获得所需的确切部分与...合作。

1 个答案:

答案 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

中找到