Qt中QListView怎么在每行嵌入CheckBox以及edit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt中QListView怎么在每行嵌入CheckBox以及edit相关的知识,希望对你有一定的参考价值。

参考技术A 在QListWidget可以用setItemWidget, 如果是QListView的话只能使用代理

在 Qt 的 QListView 中为图像设置边框

【中文标题】在 Qt 的 QListView 中为图像设置边框【英文标题】:Set border to an image in QListView in Qt 【发布时间】:2013-08-07 10:51:44 【问题描述】:

我正在将 QPixmap 设置为 QStandardItem:

QStandardItem* item = new QStandardItem();
item->setData( pixmap, Qt::DecorationRole );

然后我执行appendRow() 并将item 添加到模型中。

我在 QListView 中显示模型中的所有像素图。 如何为 ListView 中的第一项(图像)设置细边框?

【问题讨论】:

【参考方案1】:

子类QStyledItemDelegate 并覆盖它的paint 函数。使用它为您的项目绘制边框。然后将该委托设置为您的 QListView。

例子:

void MyDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const

    if(index.row() == 0)
    
        painter->setPen(QPen(Qt::red, 2));
        painter->drawRect(option.rect.x()+1, option.rect.y(), option.rect.width()-1, option.rect.height());
    
    QStyledItemDelegate::paint(painter, option, index);

还有set the delegate for your QListView:

listView->setItemDelegate(new MyDelegate);

您不必检查绘图函数中的行。你可以set the delegate for a specific row:

listView->setItemDelegateForRow(0, new MyDelegate);

【讨论】:

以上是关于Qt中QListView怎么在每行嵌入CheckBox以及edit的主要内容,如果未能解决你的问题,请参考以下文章

在 Qt 的 QListView 中为图像设置边框

删除 QListView 背景

在 Qt 中找不到 Qlistview Selectionchanged 事件?

信号和插槽的连接(关于 qlistview) - Qt

Qt:更改 QListView 中的图标

Qt入门系列开发教程高级控件篇QListview列表视图