
先来看效果,在tablewidget表头第一列有一个checkbox选择框
这个选择框实现对下面所有项的全选功能
需要自定义表头类继承HeaderView
自定义表头类
MyHeaderView.h
#ifndef MYHEADERVIEW_H
#define MYHEADERVIEW_H
#include <QHeaderView>
#include <QtGui>
#include <QPainter>
#include <QStyleOptionButton>
#include <QStyle>
#include <QCheckBox>
#include <QEvent>
#include <QMouseEvent>
#include <QStringList>
#include <QPushButton>
using namespace std;
class MyHeaderView : public QHeaderView
{
    Q_OBJECT
public:
    MyHeaderView( QPoint topLeft, QSize size,
                       Qt::Orientation orientation, QWidget *parent = nullptr);
protected:
    ///
    /// \brief paintSection  绘制表头
    /// \param painter
    /// \param rect         rect是表头第一列的大小画复选框的列,
    /// \param logicalIndex 表示表头第几列,0表示第0列
    ///
    void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const;
    ///
    /// \brief mousePressEvent 表头上按下鼠标按钮时
    /// \param event
    ///
    void mousePressEvent(QMouseEvent *event);
public:
    void setCheckState(bool state);             //设置复选框状态
    QStringList HeaderContent() const;         //m_HeaderContent get方法
    
    void setHeaderContent(const QStringList &HeaderContent);  //m_HeaderContent 的set方法
signals:
    void signalCheckStateChanged(bool state);   //勾选状态发生改变信号
private:
    QPoint  topLeft        ;        //勾选框起始屏幕坐标
    QSize   boxSize        ;        //勾选框大小
    bool    isChecked      ;      //勾选框状态
    bool isPlateNameDown   ; //压板名称列
    QStringList m_HeaderContent;
    QCheckBox *check       ;
    QPushButton *button_plate_name ;
};
#endif // MYHEADERVIEW_H 
MyHeaderView.cpp
#include "MyHeaderView.h"
MyHeaderView::MyHeaderView(QPoint topLeft, QSize size, Q
                
                  
                  
                  
                  
最低0.47元/天 解锁文章
                          
                      
      
          
                
                
                
                
              
                
                
                
                
                
              
                
                
              
            
                  
					2337
					
被折叠的  条评论
		 为什么被折叠?
		 
		 
		
    
  
    
  
            


            