当前位置: 首页 > news >正文

qt qtablewidget自定义表头

目前项目需要通过自定义表头,来实现某些效果。现在定义了QComBox和QCheckBox,直接上代码:

实现了QCheckBox的三态显示.

h文件如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QTableView>
#include <QStandardItemModel>
#include <QHeaderView>
#include <QCheckBox>
#include <QComboBox>class CustomHeaderView:public QHeaderView
{Q_OBJECTpublic:// 默认水平方向CustomHeaderView(Qt::Orientation ori = Qt::Horizontal, QWidget*parent = 0);//自定义头部,主要实现这个函数
protected:void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const;public slots:void slt_checkbox_click(bool);void slt_checkbox_stateChanged(int state);void slt_combox_item_click(QString );void slt_combox_item_click(int currentIndex);private:QCheckBox *m_checkbox;QComboBox *m_combox;
};class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = 0);~MainWindow();private:QTableView *m_tabView;CustomHeaderView *head;};#endif // MAINWINDOW_H

cpp如下

#include <QDebug>
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{this->setFixedSize(800,480);m_tabView = new QTableView(this);m_tabView->setFixedSize(800,480);QStandardItemModel *model = new QStandardItemModel();model->setColumnCount(6);m_tabView->setModel(model);/*CustomHeaderView **/head = new CustomHeaderView(Qt::Horizontal,this);head->setSectionResizeMode(QHeaderView::Fixed);m_tabView->setHorizontalHeader(head);
}MainWindow::~MainWindow()
{}CustomHeaderView::CustomHeaderView(Qt::Orientation ori, QWidget *parent):QHeaderView(ori,parent)
{m_checkbox = new QCheckBox(this);m_combox = new QComboBox(this);m_checkbox->setTristate(true);m_combox->addItem("item1");m_combox->addItem("item2");m_combox->addItem("item3");//    connect(m_checkbox,SIGNAL(clicked(bool)),this, SLOT(slt_checkbox_click(bool)));connect(m_checkbox,SIGNAL(stateChanged(int)),this, SLOT(slt_checkbox_stateChanged(int)));
//    connect(m_combox, SIGNAL(currentIndexChanged(QString)),this,SLOT(slt_combox_item_click(QString)));connect(m_combox, SIGNAL(currentIndexChanged(int)),this,SLOT(slt_combox_item_click(int)));
}void CustomHeaderView::paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const
{QHeaderView::paintSection(painter,rect,logicalIndex);//logicalIndex 当前第几列,也可以自定义显示其他控件;if(logicalIndex == 0){QRect tmp;tmp.setSize(QSize(20,20));tmp.moveCenter(rect.center());m_checkbox->setGeometry(tmp);}else if(logicalIndex ==2){m_combox->setGeometry(rect);}
}void CustomHeaderView::slt_checkbox_click(bool state)
{
//qDebug() << "slt_checkbox_click" << state;//此处可以自定义信号
}void CustomHeaderView::slt_checkbox_stateChanged(int state)
{m_checkbox->setCheckState((Qt::CheckState)state);
}void CustomHeaderView::slt_combox_item_click(QString itemstr)
{//    slt_checkbox_stateChanged((Qt::CheckState)state);qDebug() << "slt_combox_item_click" << itemstr;//此处可以自定义信号}void CustomHeaderView::slt_combox_item_click(int currentIndex)
{slt_checkbox_stateChanged((Qt::CheckState)currentIndex);qDebug() << "slt_combox_item_click" << currentIndex;//此处可以自定义信号}

main.cpp文件

#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}

pro文件如下。

#-------------------------------------------------
#
# Project created by QtCreator 2020-12-30T15:16:30
#
#-------------------------------------------------QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = CustomTableHeadView
TEMPLATE = appSOURCES += main.cpp\mainwindow.cppHEADERS  += mainwindow.h

可以通过这个实现一些其它的应用场景,特此记录一下。

下载链接如下:

qttablewidge自定义表头QHeaderView资源-CSDN下载

http://www.dtcms.com/a/321928.html

相关文章:

  • ubantu20.04 orin nx 显示器驱动
  • 【C++】类和对象--类中6个默认成员函数(2) --运算符重载
  • 【C#】掌握并发利器:深入理解 .NET 中的 Task.WhenAll
  • Docker容器部署前端Vue服务
  • 复杂路况误报率↓78%!陌讯轻量化模型在车辆违停识别的边缘计算优化​
  • 2025-08-08 李沐深度学习11——深度学习计算
  • 位置编码——RoPE篇
  • 机器学习算法篇(七)深入浅出K-means算法:从原理到实战全解析
  • 【深度学习新浪潮】近三年3DGS在大规模场景重建中的研究进展(2022-2025)
  • 北京上海深圳广州打捞日记
  • 一种基于空间聚类的低特征场景下多目标跟踪技术
  • 什么是ros功能包和ros节点
  • C++程序库选择:权衡与取舍的艺术——以iostream和stdio为例
  • 【大模型】(实践版)Qwen2.5-VL-7B-Instruct模型量化以及运行测试
  • 基于python的农产品销售调度管理的数据可视化系统/基于django的农产品销售系统设计与实现
  • 12-Django项目实战-登录短信验证
  • 解决 MinIO 上传文件时报 S3 API Requests must be made to API port错误
  • 半精度权重 及 Phi-3线性层的权重分布
  • Node.js版本管理,方便好用
  • Mybatis注解开发与事务
  • MPLS LDP标签的分发与管理
  • Linux基础命令速查:从入门到精通
  • 搜广推校招面经一百零三
  • 从手工到智能决策,ERP让制造外贸企业告别“数据孤岛“降本增效
  • Flow的进阶学习2025
  • 亚马逊广告运营如何平衡ASIN投放和关键词投放
  • 用不均匀硬币实现公平决策
  • 虚拟机Ubuntu图形化界面root用户登录错误
  • Python的七大框架对比分析
  • 《嵌入式数据结构笔记(六):二叉树》