zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Pycharm简单使用教程
    【Jenkins学习】【第二节】 jenkins构建触发器定时任务
    Docker之从零开始制作docker镜像
    手机APP自动化环境搭建
    格式字符详解
    Bash Shell之内建命令和保留字
    asp.net 实现后台异步处理的方式
    Spring3.2.0 之后各个版本完整包下载地址
    Oracle的rollup、cube、grouping sets函数
    C# 委托类型及使用
  • 原文地址:https://www.cnblogs.com/coolbear/p/12844367.html
Copyright © 2011-2022 走看看