combobox 多列显示

第三方控件EHLIB中的 dblookupcomboboxeh,给它的ListSource指定一个数据源,然后它有一个listField属性,要什么列就可以写在那里,然后用";"分隔开来,就可以有这样的效果了,
      Form1.DBLookupComboboxEh1.ListSource:=DataModule1.DataSource1;
      Form1.DBLookupComboboxEh1.ListField:='编号;名称';//要显示的列
      Form1.DBLookupComboboxEh1.KeyField:='编号';//实际的值
      Form1.DBLookupComboboxEh1.ListFieldIndex:=1;//显示的是哪一列,1表示第二列
这样也可以.
在Qt中,QComboBox(组合框)默认只支持单列显示,如果你想在QComboBox中实现多列显示菜单,你可以使用自定义模型(QStandardItemModel)和槽函数来扩展其功能。以下是一个简单的步骤指南: 1. **创建自定义模型**: 首先,创建一个继承自`QStandardItemModel`的类,用于存储多列数据。在每行数据中,添加多个`QStandardItem`,每个代表一列。 ```cpp class MultiColumnModel : public QStandardItemModel { public: explicit MultiColumnModel(QObject *parent = nullptr) : QStandardItemModel(parent) {} void addRow(const QStringList& columns) { QStandardItem* item = new QStandardItem(this); for (const QString& column : columns) { QStandardItem* subItem = new QStandardItem(column); item->appendRow(subItem); } insertRow(data().rowCount(), item); } }; ``` 2. **设置模型到QComboBox**: 创建QComboBox,并设置你的自定义模型作为数据源。 ```cpp MultiColumnModel model; QComboBox comboBox; comboBox.setModel(&model); ``` 3. **处理选择**: 你可以为QComboBox连接`activated`信号,以便当用户从菜单选择项时,执行相应的操作。 ```cpp connect(&comboBox, &QComboBox::activated, this, [this](int index) { QModelIndex selectedIndex = comboBox.currentIndex(); QStringList columns = model.item(selectedIndex.row()).children().map<QString>({QVariant::toStdString}).toList(); // 处理选中的列数据 }); ``` 4. **添加到菜单**: 如果你需要在构建菜单时直接设置多列,可以在`addRow`方法中添加更多列数据。 ```cpp model.addRow({"Column 1", "Column 2", "Column 3"}); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值