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

  • 相关阅读:
    selenium 等待时间
    将博客搬至CSDN
    关于科研和工作的几点思考
    窥探观察者模式
    泛型编程拾遗
    【opencv入门篇】 10个程序快速上手opencv【下】
    【opencv入门篇】 10个程序快速上手opencv【上】
    【opencv入门篇】快速在VS上配置opencv
    【MFC系列】MFC快速设置控件文本字体、大小、颜色、背景
    如何用Qt Creator输出helloworld
  • 原文地址:https://www.cnblogs.com/coolbear/p/12844367.html
Copyright © 2011-2022 走看看