QT 重写QStyledItemDelegate类实现item中的data数据显示

达到的效果
在这里插入图片描述
item数据正常添加
在这里插入图片描述
关键的一行代码
在这里插入图片描述

在MyItemDrawer中需要重写两个函数
1、void MyItemDrawer::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const

留出边框
在这里插入图片描述
QRect中的adjust函数详情可查看转载的博客

图片显示
在这里插入图片描述
名字显示
在这里插入图片描述
电话显示
在这里插入图片描述

2、QSize MyItemDrawer::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt,可以通过自定义一个QComboBox的ItemDelegate实现在QComboBox添加一个Button,并且点击这个Button实现关闭当前选item。具体步骤如下: 1. 新建一个,继承自QStyledItemDelegate重写createEditor、updateEditorGeometry和paint方法。其,createEditor方法用于创建一个QWidget对象作为ItemDelegate的编辑器,updateEditorGeometry方法用于更新编辑器的位置和大小,paint方法用于绘制ItemDelegate的内容。 2. 在createEditor方法创建一个QPushButton对象,并且将其与QComboBox的currentIndexChanged信号连接起来。在这个槽函数,可以通过QComboBox的currentIndex方法获取当前选item的索引,然后通过QComboBox的removeItem方法将其从QComboBox删除。 3. 将自定义的ItemDelegate对象设置为QComboBox的ItemDelegate,即可在QComboBox添加一个Button。 下面是示例代码: ``` class ComboBoxDelegate : public QStyledItemDelegate { public: QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override { QPushButton *button = new QPushButton("Close", parent); connect(button, &QPushButton::clicked, this, [=](){ QComboBox *comboBox = qobject_cast<QComboBox*>(parent); if(comboBox) { int currentIndex = comboBox->currentIndex(); comboBox->removeItem(currentIndex); } }); return button; } void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override { editor->setGeometry(option.rect); } void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override { painter->drawText(option.rect, index.data().toString()); } }; //在使用QComboBox的地方设置ItemDelegate QComboBox *comboBox = new QComboBox(this); comboBox->setItemDelegate(new ComboBoxDelegate()); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值