(7条消息) Qt5.9中表格控件QTableView用法示例

本文章主要总结QTableView类的用法,主要通过一个简单的实例,说明QTableView类用法。

本文的例子主要采用垂直布局,在该布局上添加一个按钮控件和表格QTableView控件。其中,表格控件表头有三列,名称分别为“序号”,“名称”,“地址”。然后在该表格内,添加一百行内容。再删除从第0行到第9行的表格内容,具体的例子如下所述。

1.1新建一个widget工程,不用勾选ui界面。然后分别在widget.h,widget.cpp,main.cpp中,分别添加下如下代码:

widget.h

  1. #ifndef WIDGET_H
  2. #define WIDGET_H
  3. #include <QWidget>
  4. #include <QVBoxLayout>
  5. #include <QPushButton>
  6. #include <QStandardItem>
  7. #include <QStandardItemModel>
  8. #include <QTreeView>
  9. #include <QTableView>
  10. #include <QHeaderView> //tableView->horizontalHeader()->setSectionResizeMode(0,QHeaderView::Stretch);
  11. class Widget : public QWidget
  12. {
  13. Q_OBJECT
  14. public:
  15. Widget(QWidget *parent = 0);
  16. ~Widget();
  17. void CreateView();
  18. private:
  19. QPushButton *testBtn;
  20. QVBoxLayout *mainLayout;
  21. // QTreeView *treeView;
  22. QStandardItemModel *standItemModel;
  23. QTableView *tableView;
  24. };
  25. #endif // WIDGET_H
  26. widget.cpp
  27. #include "widget.h"
  28. Widget::Widget(QWidget *parent)
  29. : QWidget(parent)
  30. {
  31. CreateView();
  32. }
  33. Widget::~Widget()
  34. {
  35. }
  36. void Widget::CreateView()
  37. {
  38. mainLayout = new QVBoxLayout; //垂直布局
  39. mainLayout->setSpacing(10); //设置控件间距
  40. mainLayout->setMargin(10); //设置边缘间距
  41. testBtn = new QPushButton("Test");
  42. //添加QTableView代码
  43. tableView = new QTableView;
  44. standItemModel = new QStandardItemModel();
  45. //添加表头
  46. standItemModel->setColumnCount(3);
  47. standItemModel->setHeaderData(0,Qt::Horizontal,QStringLiteral("序号")); //设置表头内容
  48. standItemModel->setHeaderData(1,Qt::Horizontal,QStringLiteral("名称"));
  49. standItemModel->setHeaderData(2,Qt::Horizontal,QStringLiteral("地址"));
  50. //向表格添加100行内容
  51. for(int i=0;i<100;i++)
  52. {
  53. QStandardItem *standItem1 = new QStandardItem(tr("%1").arg(i+1));
  54. QStandardItem *standItem2 = new QStandardItem(tr("第%1行").arg(i+1));
  55. standItemModel->setItem(i,0,standItem1); //表格第i行,第0列添加一项内容
  56. standItemModel->item(i,0)->setForeground(QBrush(QColor(255,0,0))); //设置字符颜色
  57. standItemModel->item(i,0)->setTextAlignment(Qt::AlignCenter); //设置表格内容居中
  58. standItemModel->setItem(i,1,standItem2); //表格第i行,第1列添加一项内容
  59. }
  60. tableView->setModel(standItemModel); //挂载表格模型
  61. //设置表格属性
  62. tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter); //表头信息显示居中
  63. tableView->horizontalHeader()->setSectionResizeMode(0,QHeaderView::Fixed); //设定表头列宽不可变
  64. tableView->horizontalHeader()->setSectionResizeMode(1,QHeaderView::Fixed);
  65. tableView->horizontalHeader()->setSectionResizeMode(2,QHeaderView::Stretch);//设定第2列表头弹性拉伸
  66. tableView->setColumnWidth(0,100); //设定表格第0列宽度
  67. tableView->setColumnWidth(1,200);
  68. tableView->verticalHeader()->hide(); //隐藏默认显示的行头
  69. tableView->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选中时整行选中
  70. tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置表格属性只读,不能编辑
  71. // tableView->setContextMenuPolicy(Qt::CustomContextMenu); //需要在表格使用右键菜单,需要启动该属性
  72. // tableView->sortByColumn(0,Qt::AscendingOrder); //表格第0列,按降序排列
  73. standItemModel->removeRows(0,10); //删除从第0行开始的连续10行
  74. mainLayout->addWidget(testBtn);
  75. mainLayout->addWidget(tableView); //添加控件
  76. this->setLayout(mainLayout); //显示垂直布局
  77. }
  78. main.cpp
  79. #include "widget.h"
  80. #include <QApplication>
  81. int main(int argc, char *argv[])
  82. {
  83. QApplication a(argc, argv);
  84. Widget w;
  85. w.resize(960,640);
  86. w.setWindowTitle(QString::fromUtf8("表格控件QTableView用法示例"));
  87. w.show();
  88. return a.exec();
  89. }
1.2程序构建和运行后,结果如下图所示:

 

总结:表格控件QTableView    VS    树形控件QTressView

表格控件QTableView跟树形控件QTressView用法类似,都是通过函数QTableView::setModel(QStandItemModel)来挂载一个QStandItemModel模型。

主要区别是QStandItemModel模型的设置方式不同。挂载到表格控件QTableView时,QStandItemModel模型需要定义表头,需要用到类QHeaderView来设置表头。

 

 

参考内容:

https://blog.csdn.net/u014563989/article/details/45585783(重点参考)

https://blog.csdn.net/imxiangzi/article/details/49204817

https://blog.csdn.net/naibozhuan3744/article/details/80816660

(0)

相关推荐