QT开发中文网

c++的qtrewidget在每个列表项中添加控件

在Qt中,可以使用QListWidget或QTreeWidget来创建列表或树形视图。在每个列表项或树节点中添加控件可以通过重写QListWidgetItem或QTreeWidgetItem的paint()函数实现。

以下是一个示例,演示如何在QListWidget中的每个项中添加一个QPushButton:

class ListWidgetItem : public QListWidgetItem
{
public:
    ListWidgetItem(const QString &text, QListWidget *parent = nullptr)
        : QListWidgetItem(text, parent)
    {
        QPushButton *button = new QPushButton("Button");
        setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled);
        setSizeHint(button->sizeHint() + QSize(0, 10)); // 设置项的大小为按钮大小加上一些空白
        listWidget()->setItemWidget(this, button); // 将按钮作为项的控件
    }
    
protected:
    void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
    {
        // 绘制项的背景和文本
        painter->fillRect(option.rect, option.state.testFlag(QStyle::State_Selected) ? option.palette.highlight() : option.palette.base());
        painter->drawText(option.rect, text());
    }
};

然后,在列表中添加项时,直接创建ListWidgetItem即可:

QListWidget *listWidget = new QListWidget(this);

for (int i = 0; i < 10; i++) {
    new ListWidgetItem(QString("Item %1").arg(i), listWidget);
}

setCentralWidget(listWidget);

这样就可以在每个列表项中添加一个按钮了。类似地,也可以使用QTreeWidgetItem来实现在每个树节点中添加控件。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=505

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?