当前位置:   article > 正文

Qt5:QTableWidget创建表格_qt画表格

qt画表格

Qt5在窗口创建表格需要用到Table Widget控件,示例代码实现了以下功能,具体情况如上图所示:

  • 设置表格行列数
  • 添加内容
  • 添加横向表头
  • 纵横表头可视化
  • 栅格可视化
  • 是否可编辑
  • 设置表格选择方式(整行或者整列)
  • 设置选择目标方式
  • 设置选中颜色
  • 合并单元格
  • 设置滚动条
  • 获取单元格内容
  • 添加Combox控件
  • 添加图片
  • 删除行和列
  • 清空内容

具体做法如下:

添加Table Widget控件

打开Qt,新建一个Qt Widgets Application项目,转到设计师模式,从左侧工具栏添加一个Table Widget控件到窗口上,调整Table Widget控件的大小,修改Table Widget控件的对象名为qTableWidget

添加代码

1、添加mainwindow.h代码

  1. #ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. namespace Ui {
  5. class MainWindow;
  6. }
  7. class MainWindow : public QMainWindow
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit MainWindow(QWidget *parent = 0);
  12. ~MainWindow();
  13. private:
  14. Ui::MainWindow *ui;
  15. };
  16. #endif // MAINWINDOW_H

2、添加mainwindow.cpp代码

  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. //添加头文件
  4. #include <QTableWidget>
  5. #include <QTableWidgetItem>
  6. #include <QDebug>
  7. #include <QComboBox>
  8. MainWindow::MainWindow(QWidget *parent) :
  9. QMainWindow(parent),
  10. ui(new Ui::MainWindow)
  11. {
  12. ui->setupUi(this);
  13. setWindowTitle(tr("TableWidget"));//设置对话框的标题
  14. ui->qTableWidget->setColumnCount(4);//设置列数
  15. ui->qTableWidget->setRowCount(10);//设置行数
  16. ui->qTableWidget->setWindowTitle("QTableWidget");
  17. QStringList m_Header;
  18. m_Header<<QString("序号")<<QString("姓名")<<QString("性别")<<QString("地址");
  19. ui->qTableWidget->setHorizontalHeaderLabels(m_Header);//添加横向表头
  20. ui->qTableWidget->verticalHeader()->setVisible(true);//纵向表头可视化
  21. ui->qTableWidget->horizontalHeader()->setVisible(true);//横向表头可视化
  22. //ui->tableWidget->setShowGrid(false);//隐藏栅格
  23. ui->qTableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置编辑方式:禁止编辑表格
  24. ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//设置表格选择方式:设置表格为整行选中
  25. //ui->qTableWidget->setSelectionBehavior(QAbstractItemView::SelectColumns);//设置表格选择方式:设置表格为整列选中
  26. ui->qTableWidget->setSelectionMode(QAbstractItemView::SingleSelection);//选择目标方式
  27. ui->qTableWidget->setStyleSheet("selection-background-color:pink");//设置选中颜色:粉色
  28. for(int rows=0;rows<10;rows++)
  29. {
  30. for(int columns=0;columns<4;columns++)
  31. {
  32. if(columns==0)
  33. {
  34. ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("1"));
  35. }
  36. else if(columns==1)
  37. {
  38. ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("可乐"));
  39. }
  40. else if(columns==2)
  41. {
  42. ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("女"));
  43. }
  44. else
  45. {
  46. ui->qTableWidget->setItem(rows,columns,new QTableWidgetItem("成都"));
  47. }
  48. }
  49. }
  50. for(int rows=0;rows<10;rows++)
  51. {
  52. for(int columns=0;columns<4;columns++)
  53. {
  54. ui->qTableWidget->setColumnWidth(columns,125);
  55. ui->qTableWidget->setRowHeight(rows,30);
  56. ui->qTableWidget->item(rows,columns)->setTextAlignment(Qt::AlignCenter);//居中显示
  57. ui->qTableWidget->item(rows,columns)->setBackgroundColor(QColor(85,170,255));//设置前景颜色
  58. ui->qTableWidget->item(rows,columns)->setTextColor(QColor(0,0,0));//设置文本颜色
  59. ui->qTableWidget->item(rows,columns)->setFont(QFont("Helvetica"));//设置字体为黑体
  60. }
  61. }
  62. ui->qTableWidget->setSpan(2, 2,2 ,1);//合并单元格
  63. ui->qTableWidget->setItem(2, 2, new QTableWidgetItem(QIcon("E:\\Qt_Project\\QTableWidget\\1.jpg"), "路飞"));//插入图片
  64. ui->qTableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//设置水平滚动条
  65. ui->qTableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);//设置垂直滚动条
  66. //设置行和列的大小设为与内容相匹配(如果设置了宽高就不要用了)
  67. //ui->qTableWidget->resizeColumnsToContents();
  68. //ui->qTableWidget->resizeRowsToContents();
  69. QString strText = ui->qTableWidget->item(1, 1)->text();//获取单元格的内容
  70. qDebug()<<"单元格内容:"<<strText;//输出单元格内容
  71. //设置列标签
  72. QStringList HStrList;
  73. HStrList.push_back(QString("id"));
  74. HStrList.push_back(QString("name"));
  75. HStrList.push_back(QString("sex"));
  76. HStrList.push_back(QString("city"));
  77. HStrList.push_back(QString("other"));
  78. //设置行列数(只有列存在的前提下,才可以设置列标签)
  79. int HlableCnt = HStrList.count();
  80. ui->qTableWidget->setRowCount(10);
  81. ui->qTableWidget->setColumnCount(HlableCnt);
  82. //设置列标签
  83. ui->qTableWidget->setHorizontalHeaderLabels(HStrList);
  84. //把QTableWidgetItem对象内容转换为QString
  85. //QString str =ui->qTableWidget->item(0,0)->data(Qt::DisplayRole).toString();
  86. //具体单元格中添加ComboBox控件,下拉列表
  87. QComboBox *comBox = new QComboBox();
  88. comBox->addItem("成都");
  89. comBox->addItem("重庆");
  90. ui->qTableWidget->setCellWidget(0,3,comBox);
  91. //ui->qTableWidget->removeColumn(0);//删除列
  92. //ui->qTableWidget->removeRow(0);//删除行
  93. //ui->qTableWidget->clear();//清空掉表格内所有内容,包括标题头
  94. //ui->qTableWidget->clearContents();//这个清空所有内容不包括标题头
  95. }
  96. MainWindow::~MainWindow()
  97. {
  98. delete ui;
  99. }

修改版

修改版完整代码:

GItHub下载:https://github.com/MarsXiaolei/QtCode/tree/master/QTableWidget

 

 

 

 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号