【Qt】QTableView 自定义列头

        QTableView表格控件默认是不支持插入QComboBox、QPushButton、QCheckBox或者是多种复杂控件组成的列头。在实际开发过程中,表格控件通常是需要进行定制化。我们以列头中插入QComboBox为例实现一个简单的自定义列头。

1、实现思路

        用一个QWidget替换掉原列头绘制位置。

2、实现方式

        继承QHeaderView实现自己的表头类CustomHeader,重写paintSection函数。在CustomHeader构造中创建好自己想要的QWidget,在CustomHeader绘制列头区域时用自己的Widget覆盖掉原区域。

CustomHeader::CustomHeader(Qt::Orientation orientation, QWidget *parent)
    : QHeaderView(orientation, parent)
{
    // 创建一个QWidget
    m_pFirstCol = new QWidget((QWidget*)this);

    // 添加布局 
    QHBoxLayout *pLayout = new QHBoxLayout(m_pFirstCol);
    pLayout->setContentsMargins(2, 0, 2, 0);
    pLayout->setSpacing(4);

    // QLabel 用于显示列名
    QLabel *pName = new QLabel(m_pFirstCol);
    pName->setText("第一列");
    pLayout->addWidget(pName);

    // 添加一个下拉框
    QComboBox *pComboBox = new QComboBox(m_pFirstCol);
    pLayout->addWidget(pComboBox);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值