• QTableWidget添加带有复选框的表头


    #ifndef SCHECKBOXHEADERVIEW_H
    #define SCHECKBOXHEADERVIEW_H
    #include <QtGui>
    #include <QPainter>
    #include <QHeaderView>
    #include <QStyleOptionButton>
    #include <QStyle>
    class SCheckBoxHeaderView : public QHeaderView
    {
        Q_OBJECT
    private:
        bool isChecked;
        int m_checkColIdx;
    public:
        SCheckBoxHeaderView( int checkColumnIndex, Qt::Orientation orientation, QWidget * parent = 0) :
        QHeaderView(orientation, parent) {
            m_checkColIdx = checkColumnIndex;
            isChecked = false;
        }
    signals:
        void checkStausChange(bool);
    protected:
        void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const {
            painter->save();
            QHeaderView::paintSection(painter, rect, logicalIndex);
            painter->restore();
            if (logicalIndex == m_checkColIdx) {
                QStyleOptionButton option;
                int width = 10;
                for (int i=0; i<logicalIndex; ++i)
                width += sectionSize( i );
                option.rect = QRect(3, 5, 21, 21);
                if (isChecked)
                    option.state = QStyle::State_On;
                else
                    option.state = QStyle::State_Off;
                this->style()->drawControl(QStyle::CE_CheckBox, &option, painter);
            }
        }
        void mousePressEvent(QMouseEvent *event) {
            if (visualIndexAt(event->pos().x()) == m_checkColIdx) {
                isChecked = !isChecked;
                this->updateSection(m_checkColIdx);
                emit checkStausChange(isChecked);
            }
            QHeaderView::mousePressEvent(event);
        }
    };
    #endif // SCHECKBOXHEADERVIEW_H
    ————————————————
    版权声明:本文为CSDN博主「沙振宇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u014597198/java/article/details/77579070

    m_checkHeader = new SCheckBoxHeaderView(0, Qt::Horizontal, this);
        this->setHorizontalHeader(m_checkHeader);   //  这个this指针的父为QTableWidget
        connect(m_checkHeader, &SCheckBoxHeaderView::checkStausChange, [=](bool check){
            qDebug() << "is:" <<check;
        });
    ————————————————
    版权声明:本文为CSDN博主「沙振宇」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/u014597198/java/article/details/77579070

  • 相关阅读:
    Django学习之路
    Bootstrap插件及其应用方法网址
    BOM和DOM
    jQuery学习
    初识JS之数据类型
    前端学习之路CSS基础学习二
    前端学习之路CSS基础学习一
    前端学习之路
    ORM
    Python Twisted 学习系列4(转载stulife最棒的Twisted入门教程)
  • 原文地址:https://www.cnblogs.com/coolbear/p/12844367.html
Copyright © 2020-2023  润新知