ComboBoxDelegate.h文件

#ifndef COMBOBOXDELEGATE_H
#define COMBOBOXDELEGATE_H#include <QObject>
#include <QStyledItemDelegate>
#include <QComboBox>class ComboBoxDelegate : public QStyledItemDelegate
{Q_OBJECT
public:ComboBoxDelegate( QObject *parent = nullptr);void setItems(const QStringList &texts);public:QWidget *createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index) const override;void setEditorData(QWidget *editor, const QModelIndex &index) const override;void setModelData(QWidget *editor,QAbstractItemModel *model,const QModelIndex &index) const override;void updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option,const QModelIndex &index) const override;void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;private://下拉框选项QStringList _texts;
};#endif // COMBOBOXDELEGATE_H

ComboBoxDelegate.cpp文件

#include "ComboBoxDelegate.h"ComboBoxDelegate::ComboBoxDelegate(QObject *parent/*=nullptr*/): QStyledItemDelegate(parent)
{}
void ComboBoxDelegate::setItems(const QStringList &texts)
{_texts = texts;
}QWidget* ComboBoxDelegate::createEditor(QWidget *parent,const QStyleOptionViewItem &option,const QModelIndex &index) const
{QComboBox *editor = new QComboBox(parent);editor->addItems(_texts);return editor;
}void ComboBoxDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{QString text = index.model()->data(index, Qt::EditRole).toString();QComboBox *comboBox = static_cast<QComboBox*>(editor);int tindex = comboBox->findText(text);comboBox->setCurrentIndex(tindex);
}void ComboBoxDelegate::setModelData(QWidget *editor,QAbstractItemModel *model,const QModelIndex &index) const
{QComboBox *comboBox = static_cast<QComboBox*>(editor);QString text = comboBox->currentText();model->setData(index, text, Qt::EditRole);
}void ComboBoxDelegate::updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option,const QModelIndex &index) const
{editor->setGeometry(option.rect);
}void ComboBoxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{QStyleOptionViewItem viewOption(option);initStyleOption(&viewOption, index);QStyledItemDelegate::paint(painter, viewOption, index);
}

使用

 //设置第0列为下拉框代理 ComboBoxDelegate* m_cbDlg = new ComboBoxDelegate;m_tableWidget->setItemDelegateForColumn(0, m_cbDlg)QStringList items;items << QString("类型1")<< QString("类型2")<< QString("类型3");//设置下拉框选项m_cbDlg->setItems(items);

示例工程

QComboBox代理相关推荐

  1. QTableView 例三(代理)

    1. QComboBox 代理 #pragma once #include <QStyledItemDelegate> class MyDelegate : public QStyledI ...

  2. 基于QTableView中的MVD代理添加总结

    目录 1.Qt中MVD说明 1.1 View 1.2 Delegate 1.3 Model/View的基本原理 2.代码是现实示例 2.1 设置样式文件 2.2 set base attribute ...

  3. QComboBox的代理(订制QComboBox组合框)

    原文地址 导读 组合框是一个重要且应用广泛的组件,一般由两个子组件组成:文本下拉单部分和按钮部分.在许多既需要用户选择.又需要用户手动输入的应用场景下,组合框能够很好的满足我们的需求.如我们经常使用的 ...

  4. QTableView中点击单元格弹出QComboBox

    主要是用QItemDelegate,写一个类继承QItemDelegate,实现createEditor(),setEditorData()和setModelData()方法 createEditor ...

  5. 2.关于QT中数据库操作,简单数据库连接操作,数据库的增删改查,QSqlTableModel和QTableView,事务操作,关于QItemDelegate 代理

     Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan ...

  6. qcombobox 隐藏_Qt之QComboBox定制

    说起下拉框,想必大家都比较熟悉,在我们注册一些网站的时候,会出现大量的地区数据供我们选择,这个时候出现的就是下拉框列表,再比如字体选择的时候也是使用的下拉框,如图1所示.下拉框到处可见,作为一个图形库 ...

  7. QComboBox列表项高度设置

    QComboBox列表项高度设置步骤: 1. 设置代理 QStyledItemDelegate *delegate = new QStyledItemDelegate(this); ui->co ...

  8. QComboBox 设置下拉列表颜色

    1.在 QComboBox 的父 Widget 中设置 QComboBox 的样式 QComboBox{background-color: rgb(255, 255, 255);border:1px ...

  9. QT--自定义代理(MVD)

    一.前言 传统的模型-视图框架可以让我们实现逻辑个展示相分离,我们只需要关心模型就可以,在模型上做的任何更改都会走动更新到视图上去,其实就是观察者模式.Qt基于传统的模型-视图框架(MVC,model ...

  10. 【QT】 QComboBox实现可下拉可编辑

    1.设置可编辑模式 comboBox->setEditable(true); 2.设置可编辑模式后,可以获取comboBox里QLineEdit 指向comboBox对应的QLineEdit,注 ...

最新文章

  1. 《Python 学习手册4th》 第十二章 if测试和语法规则
  2. RIPPER算法原理
  3. HDU 1789 Doing Homework again (贪心)
  4. 应该怎么学python_什么样的人适合学Python,应该怎么学?
  5. Outlook通过RPC/RPC Over HTTPS访问Exchange邮箱
  6. python 压力测试小 demo
  7. 爬虫-11-伪造电脑访问构建一个请求头
  8. Python新手学习基础之数据结构-序列2
  9. html上传视频文件前端显示,文件分片上传之前端文件分片
  10. WebWork配置文件详解
  11. oracle _db_block_write_batch,Oracle体系结构----实例的进程结构
  12. 深度学习图像分类(十三):ShuffleNet系列(V1,V2)
  13. 微信开发:解决IOS端下面的点击延迟问题
  14. 微信公众平台开发-分享接口的实现
  15. 注册时验证用户名和密码是否合法
  16. 机械革命s3和机械革命s3pro的区别 哪个好
  17. 一个文科生的工程师之路
  18. 用原生JavaScript写出类似jQuery中slideUp和slideDown效果
  19. ANSYS Products 2020 R1 Linux64版本安装
  20. C#对图片压缩(对jpg压缩效果最好)

热门文章

  1. uml通信图画法_UML各种图画法总结
  2. 闲置台式机+文件服务器,闲置主机秒变家用NAS,让你的闲置电脑变存储中心
  3. STVD+Cosmic搭建STM8开发环境
  4. linux超级用户添加,为linux普通用户添加超级用户权限sudo
  5. springBoot整合ElasticSearch【代码直接复制可用】(超级详细)
  6. ENVI Landsat8影像掩膜裁剪
  7. 支持向量机之思维导图
  8. 最小二乘支持向量机(基于MATLAB)
  9. 点微同城系统整站源码+带PC端与小程序端/49款插件
  10. Linux-chmod