#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QStandardItem>
#include <QTableView>
#include <QHeaderView>
#include <QMessageBox>
#include <QFile>
#include "CUISpinBoxDelegate.h"
#include "CUIComboBoxDelegate.h"
#include "CUIMutipleButtonDeleagate.h"
#include "CUICheckBoxDelegate.h"
#include "CUIPixmapDelegate.h"
#include "CUILineEditDelegate.h"
#include "CUIOnlyReadDelegate.h"
#include "CUITextDelegate.h"
#include "CUIProcessBarDelegate.h"
#include "CUIDateEditDelegate.h"
#include "CUICustomDelegate.h"
QStandardItemModel *model;
CUITableHeaderView *pTableHeaderView;
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tableView ->resize(500,500);
/***************** 1、设置样式 *****************/
QString qssData = nullptr;
QFile fileqss(":/qss/QSSUITableView");
if(fileqss.open(QFile::ReadOnly))
{
qssData = fileqss.readAll();
fileqss.close();
}
ui->tableView->setStyleSheet(qssData);
/***************** 2、set base attribute *****************/
ui->tableView->verticalHeader()->hide(); // 隐藏垂直头
ui->tableView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); // 隐藏水平头
//ui->tableView->horizontalHeader()->setStretchLastSection(true); // 设置随后一列拉伸
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Interactive); // 设置列平均分配
//ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); // 设置TreeWidget水平滚动和自适应宽度
//ui->tableView->setColumnWidth(headersList.count() - 1, TITLE_FIXED_HEIGHT); // 设置最后一列固定
//ui->tableView->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); // 行单选
ui->tableView->setSelectionMode(QAbstractItemView::SelectionMode::MultiSelection); // 行多选 (单选QAbstractItemView::SingleSelection 多选:QAbstractItemView::MultiSelection)
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); // 不可编辑
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); // 设置选中模式为整行
ui->tableView->setShowGrid(false); // 显示/隐藏网格线
setFocusPolicy(Qt::FocusPolicy::NoFocus); // 设置选中之后无虚线焦点
//horizontalHeader()->setMinimumSectionSize(100); // 设置最小列宽
//horizontalHeader()->setMaximumSectionSize(100); // 设置最大列宽
ui->tableView->verticalHeader()->setDefaultSectionSize(25); // 可以设置tableview所有列的默认行高为15。
//horizontalHeader()->setDefaultSectionSize(15); // 可以设置tableview所有行的默认列宽为15。
ui->tableView->setWordWrap(false); // 设置不自动换行
setMouseTracking(true); // 设置鼠标追踪
// 设置第0列固定宽度
/*
ui->tableView->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setSectionResizeMode(1, QHeaderView::Stretch);
ui->tableView->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setSectionResizeMode(4, QHeaderView::Fixed);
ui->tableView->horizontalHeader()->setSectionResizeMode(5, QHeaderView::Fixed);
ui->tableView->setColumnWidth(0, 50);
ui->tableView->setColumnWidth(2, 150);
ui->tableView->setColumnWidth(3, 150);
ui->tableView->setColumnWidth(4, 150);
ui->tableView->setColumnWidth(5, 150);
*/
/***************** 3、设置model *****************/
model = new QStandardItemModel;
ui->tableView->setModel(model);
/***************** 4、设置表头 *****************/
QStringList headerList;
headerList<<"姓名"<<"QSpinBox"<<"QComboBox"<<"QPushButton"<<"CheckBox"<<"QPixmap"<<"QLineEdit"<<"ReadOnly"<<"Text"<<"ProcessBar"<<"DateEdit"<<"CustomWidget"<<"pDoubleProcessBar";
model->setHorizontalHeaderLabels(headerList);
/***************** 5、设置数据 *****************/
model->setItem(0,0,new QStandardItem("张三"));
model->setItem(1,0,new QStandardItem("李四"));
model->setItem(2,0,new QStandardItem("王二"));
model->setItem(3,0,new QStandardItem("小明同学"));
model->setItem(0,1,new QStandardItem("1"));
model->setItem(1,1,new QStandardItem("2"));
model->setItem(2,1,new QStandardItem("3"));
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); // 选择一行
/***************** 6、添加 QSpinBox 代理 *****************/
CUISpinBoxDelegate *pSpinBox = new CUISpinBoxDelegate(this);
ui->tableView->setItemDelegateForColumn(1, pSpinBox);
/***************** 7、添加 QComboBox 代理 *****************/
CUIComboBoxDelegate *pComboBox = new CUIComboBoxDelegate(this);
ui->tableView->setItemDelegateForColumn(2, pComboBox);
/***************** 8、添加 QPushButton 代理 *****************/
CUIMutipleButtonDeleagate *pMutipleBtn = new CUIMutipleButtonDeleagate(QStringList() << "修改" << "删除", this);
ui->tableView->setItemDelegateForColumn(3, pMutipleBtn);
connect(pMutipleBtn, &CUIMutipleButtonDeleagate::editData, [&](){
QMessageBox::information(this, "提示", "这是一个编辑按钮");
});
connect(pMutipleBtn, &CUIMutipleButtonDeleagate::deleteData, [&](){
QMessageBox::information(this, "提示", "这是一个删除按钮");
});
/***************** 8、添加 CheckBox 代理 *****************/
/*CUITableHeaderView **/pTableHeaderView = new CUITableHeaderView(Qt::Horizontal, ui->tableView);
connect(pTableHeaderView, &CUITableHeaderView::stateChanged, this, &MainWindow::headerStateChangedSlot);
connect(model, SIGNAL(itemChanged(QStandardItem*)), this, SLOT(itemChangedSlot(QStandardItem*)));
ui->tableView->setHorizontalHeader(pTableHeaderView);
CUICheckBoxDelegate *pCheckedBox = new CUICheckBoxDelegate(this);
ui->tableView->setItemDelegateForColumn(4, pCheckedBox);
/***************** 9、添加 Pixmap 代理 *****************/
CUIPixmapDelegate *pPixmap = new CUIPixmapDelegate(this);
ui->tableView->setItemDelegateForColumn(5, pPixmap);
/***************** 9、添加 LineEdit 代理 *****************/
CUILineEditDelegate *pLineEdit = new CUILineEditDelegate(this);
ui->tableView->setItemDelegateForColumn(6, pLineEdit);
/***************** 10、添加 ReadOnly 代理 *****************/
CUIOnlyReadDelegate *pReadOnly = new CUIOnlyReadDelegate(this);
ui->tableView->setItemDelegateForColumn(7, pReadOnly);
/***************** 11、添加 Text 代理 *****************/
CUITextDelegate *pLabel = new CUITextDelegate(this);
ui->tableView->setItemDelegateForColumn(8, pLabel);
/***************** 12、添加 pProcessBar 代理 *****************/
CUIProcessBarDelegate *pProcessBar = new CUIProcessBarDelegate();
ui->tableView->setItemDelegateForColumn(9, pProcessBar);
QModelIndex index = model->index(0, 9, QModelIndex());
model->setData(index,29);
/***************** 13、添加 DateEdit 代理 *****************/
CUIDateEditDeleg
没有合适的资源?快使用搜索试试~ 我知道了~
QTableView中添加各种代码(QSpinBox QconboBox QPushbutton 等)
共37个文件
cpp:14个
h:13个
png:4个
5星 · 超过95%的资源 需积分: 0 17 下载量 199 浏览量
2023-04-14
17:31:50
上传
评论
收藏 31KB ZIP 举报
温馨提示
QTableView中添加各种代码(QSpinBox QconboBox QPushbutton 等)
资源推荐
资源详情
资源评论
收起资源包目录
TableView_demo.zip (37个子文件)
TableView_demo
CUILineEditDelegate.h 1022B
CUIComboBoxDelegate.h 1KB
CUICheckBoxDelegate.h 4KB
CUIDateEditDelegate.cpp 1KB
CUIPixmapDelegate.cpp 121B
mainwindow.h 485B
CUILineEditDelegate.cpp 1KB
CUIPixmapDelegate.h 1KB
CUIMutipleButtonDeleagate.cpp 5KB
Resoutces.qrc 470B
Images.qrc 467B
CUIOnlyReadDelegate.cpp 134B
mainwindow.cpp 10KB
CUICustomWidget.h 702B
CUISpinBoxDelegate.cpp 1KB
CUIDateEditDelegate.h 853B
CUIProcessBarDelegate.cpp 4KB
main.cpp 291B
mainwindow.ui 896B
CUIComboBoxDelegate.cpp 2KB
CUICheckBoxDelegate.cpp 7KB
CUISpinBoxDelegate.h 1KB
CUITextDelegate.cpp 117B
CUIOnlyReadDelegate.h 449B
CUICustomWidget.cpp 1KB
Resources
images
unchecked.png 304B
error.png 291B
partchecked.png 349B
checked.png 471B
qsss
CUITableView.qss 5KB
CUITextDelegate.h 1KB
TableView_demo.pro.user 25KB
CUICustomDelegate.cpp 2KB
TableView_demo.pro 1KB
CUICustomDelegate.h 1KB
CUIMutipleButtonDeleagate.h 2KB
CUIProcessBarDelegate.h 1KB
共 37 条
- 1
资源评论
- weixin_359998602023-05-11太棒了,直接拿来用,感谢博主!
- 安凉翊2023-12-04解决了博主遗留的checkbox头不刷新的问题也感谢博主的分享
ONE米球兔
- 粉丝: 1931
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功