Qt5(QTableWidget创建表格)

Qt5(QTableWidget创建表格)
文章图片

Qt5在窗口创建表格需要用到Table Widget控件,示例代码实现了以下功能,具体情况如上图所示:
  • 设置表格行列数
  • 添加内容
  • 添加横向表头
  • 纵横表头可视化
  • 栅格可视化
  • 是否可编辑
  • 设置表格选择方式(整行或者整列)
  • 设置选择目标方式
  • 设置选中颜色
  • 合并单元格
  • 设置滚动条
  • 获取单元格内容
  • 添加Combox控件
  • 添加图片
  • 删除行和列
  • 清空内容
具体做法如下:
添加Table Widget控件
打开Qt,新建一个Qt Widgets Application项目,转到设计师模式,从左侧工具栏添加一个Table Widget控件到窗口上,调整Table Widget控件的大小,修改Table Widget控件的对象名为qTableWidget。
添加代码 1、添加mainwindow.h代码
#ifndef MAINWINDOW_H #define MAINWINDOW_H#include namespace Ui { class MainWindow; }class MainWindow : public QMainWindow { Q_OBJECTpublic: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H

2、添加mainwindow.cpp代码
#include "mainwindow.h" #include "ui_mainwindow.h" //添加头文件 #include #include #include #include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); setWindowTitle(tr("TableWidget")); //设置对话框的标题 ui->qTableWidget->setColumnCount(4); //设置列数 ui->qTableWidget->setRowCount(10); //设置行数 ui->qTableWidget->setWindowTitle("QTableWidget"); QStringList m_Header; m_Header<qTableWidget->setHorizontalHeaderLabels(m_Header); //添加横向表头 ui->qTableWidget->verticalHeader()->setVisible(true); //纵向表头可视化 ui->qTableWidget->horizontalHeader()->setVisible(true); //横向表头可视化 //ui->tableWidget->setShowGrid(false); //隐藏栅格 ui->qTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置编辑方式:禁止编辑表格 ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置表格选择方式:设置表格为整行选中 //ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns); //设置表格选择方式:设置表格为整列选中 ui->qTableWidget->setSelectionMode(QAbstractItemView::SingleSelection); //选择目标方式 ui->qTableWidget->setStyleSheet("selection-background-color:pink"); //设置选中颜色:粉色for(int rows=0; rows<10; rows++) { for(int columns=0; columns<4; columns++) { if(columns==0) { ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("1")); } else if(columns==1) { ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("可乐")); } else if(columns==2) { ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("女")); } else { ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("成都")); } } } for(int rows=0; rows<10; rows++) { for(int columns=0; columns<4; columns++) { ui->qTableWidget->setColumnWidth(columns,125); ui->qTableWidget->setRowHeight(rows,30); ui->qTableWidget->item(rows,columns)->setTextAlignment(Qt::AlignCenter); //居中显示 ui->qTableWidget->item(rows,columns)->setBackgroundColor(QColor(85,170,255)); //设置前景颜色 ui->qTableWidget->item(rows,columns)->setTextColor(QColor(0,0,0)); //设置文本颜色 ui->qTableWidget->item(rows,columns)->setFont(QFont("Helvetica")); //设置字体为黑体 } } ui->qTableWidget->setSpan(2, 2,2 ,1); //合并单元格 ui->qTableWidget->setItem(2, 2, new QTableWidgetItem(QIcon("E:\\Qt_Project\\QTableWidget\\1.jpg"), "路飞")); //插入图片 ui->qTableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); //设置水平滚动条 ui->qTableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); //设置垂直滚动条 //设置行和列的大小设为与内容相匹配(如果设置了宽高就不要用了) //ui->qTableWidget->resizeColumnsToContents(); //ui->qTableWidget->resizeRowsToContents(); QString strText = ui->qTableWidget->item(1, 1)->text(); //获取单元格的内容 qDebug()<<"单元格内容:"setRowCount(10); ui->qTableWidget->setColumnCount(HlableCnt); //设置列标签 ui->qTableWidget->setHorizontalHeaderLabels(HStrList); //把QTableWidgetItem对象内容转换为QString //QString str =ui->qTableWidget->item(0,0)->data(Qt::DisplayRole).toString(); //具体单元格中添加ComboBox控件,下拉列表 QComboBox *comBox = new QComboBox(); comBox->addItem("成都"); comBox->addItem("重庆"); ui->qTableWidget->setCellWidget(0,3,comBox); //ui->qTableWidget->removeColumn(0); //删除列 //ui->qTableWidget->removeRow(0); //删除行 //ui->qTableWidget->clear(); //清空掉表格内所有内容,包括标题头 //ui->qTableWidget->clearContents(); //这个清空所有内容不包括标题头 }MainWindow::~MainWindow() { delete ui; }

修改版 Qt5(QTableWidget创建表格)
文章图片

修改版完整代码:
GItHub下载:https://github.com/MarsXiaolei/QtCode/tree/master/QTableWidget
【Qt5(QTableWidget创建表格)】

    推荐阅读