QTableView常用于实现数据的表格显示。下面我们如何按步骤实现学生信息表格:

一 添加表头

//准备数据模型

    QStandardItemModel *student_model = new QStandardItemModel();

    student_model->setHorizontalHeaderItem(0, new QStandardItem(QObject::tr("Name")));

    student_model->setHorizontalHeaderItem(1, new QStandardItem(QObject::tr("NO.")));

    student_model->setHorizontalHeaderItem(2, new QStandardItem(QObject::tr("Sex")));

    student_model->setHorizontalHeaderItem(3, new QStandardItem(QObject::tr("Age")));

    student_model->setHorizontalHeaderItem(4, new QStandardItem(QObject::tr("College")));

    //利用setModel()方法将数据模型与QTableView绑定

    ui->student_tableview->setModel(student_model);

二 设置表格属性

//设置列宽不可变动,即不能通过鼠标拖动增加列宽        

    ui->student_tableview->horizontalHeader()->setResizeMode(0, QHeaderView::Fixed);   

    ui->student_tableview->horizontalHeader()->setResizeMode(1, QHeaderView::Fixed);   

    ui->student_tableview->horizontalHeader()->setResizeMode(2, QHeaderView::Fixed);   

    ui->student_tableview->horizontalHeader()->setResizeMode(3, QHeaderView::Fixed);   

    ui->student_tableview->horizontalHeader()->setResizeMode(4, QHeaderView::Fixed);

//设置表格的各列的宽度值        

    ui->student_tableview->setColumnWidth(0,100);    

    ui->student_tableview->setColumnWidth(1,100);    

    ui->student_tableview->setColumnWidth(2,100);    

    ui->student_tableview->setColumnWidth(3,100);    

    ui->student_tableview->setColumnWidth(4,100);

//默认显示行头,如果你觉得不美观的话,我们可以将隐藏        

    ui->student_tableview->verticalHeader()->hide();

//设置选中时为整行选中        

    ui->student_tableview->setSelectionBehavior(QAbstractItemView::SelectRows);         

      

    //设置表格的单元为只读属性,即不能编辑        

    ui->student_tableview->setEditTriggers(QAbstractItemView::NoEditTriggers);

//如果你用在QTableView中使用右键菜单,需启用该属性        

    ui->tstudent_tableview->setContextMenuPolicy(Qt::CustomContextMenu);

三 动态添加行

在表格中添加行时,我们只需要在model中插入数据即可,一旦model中的数据发生变化,QTabelView显示就会做相应的变动

//在第一行添加学生张三的个人信息(setItem函数的第一个参数表示行号,第二个表示列号,第三个为要显示的数据)

    student_model->setItem(0, 0, new QStandardItem(“张三"));

    student_model->setItem(0, 1, new QStandardItem("20120202"));

    student_model->setItem(0, 2, new QStandardItem("男"));

    student_model->setItem(0, 3, new QStandardItem("18"));

    student_model->setItem(0, 4, new QStandardItem("土木学院"));

四 设置数据显示的样式 

//设置单元格文本居中,张三的数据设置为居中显示

    student_model->item(0, 0)->setTextAlignment(Qt::AlignCenter);

    student_model->item(0, 1)->setTextAlignment(Qt::AlignCenter);

    student_model->item(0, 2)->setTextAlignment(Qt::AlignCenter);

    student_model->item(0, 3)->setTextAlignment(Qt::AlignCenter);

    student_model->item(0, 4)->setTextAlignment(Qt::AlignCenter);

//设置单元格文本颜色,张三的数据设置为红色

    student_model->item(0, 0)->setForeground(QBrush(QColor(255, 0, 0))); 

    student_model->item(0, 1)->setForeground(QBrush(QColor(255, 0, 0))); 

    student_model->item(0, 2)->setForeground(QBrush(QColor(255, 0, 0))); 

    student_model->item(0, 3)->setForeground(QBrush(QColor(255, 0, 0))); 

    student_model->item(0, 4)->setForeground(QBrush(QColor(255, 0, 0)));

//将字体加粗

    student_model->item(0, 0)->setFont( QFont( "Times", 10, QFont::Black ) );

    student_model->item(0, 1)->setFont( QFont( "Times", 10, QFont::Black ) );

    student_model->item(0, 2)->setFont( QFont( "Times", 10, QFont::Black ) );

    student_model->item(0, 3)->setFont( QFont( "Times", 10, QFont::Black ) );

    student_model->item(0, 4)->setFont( QFont( "Times", 10, QFont::Black ) );

//设置排序方式,按年龄降序显示

    student_model->sort(3, Qt::DescendingOrder);

转自http://hi.baidu.com/alalmn/item/ee728a37d559e748033edce3

QTableView的更多相关文章

  1. QTableView中修改某个单元格或者行或者列内容颜色

    QTableView的单元格内容实现还是继承了TableViewModel类的data(const QModelIndex &index, int role) const函数,那个设置颜色的问 ...

  2. QT QTableView用法小结

    QTableView常用于实现数据的表格显示.下面我们如何按步骤实现学生信息表格: 一 添加表头 //准备数据模型 QStandardItemModel *student_model = new QS ...

  3. QTableView 一列添加两个按钮

    在QTableView的一列里添加两个按钮,之前添加一个按钮的思路是一样的,只是计算了一下按钮的宽,放两个按钮而已. 添加一个按钮的例子:QTableView 添加按钮 本例源代码:QtTowButt ...

  4. QTableView 添加按钮

    这里说一下怎么在QTableView添加一个按钮 添加两个按钮的例子在这篇文章里:QTableView 一列添加两个按钮 效果是点击button弹出一个对话框. 看一下ButtonDelegate的代 ...

  5. QTableView 添加进度条

    记录一下QTableView添加进度条 例子很小,仅供学习 使用QItemDelegate做的实现 有自动更新进度 要在.pro文件里添加 CONFIG += c++ ProgressBarDeleg ...

  6. QTableView表格视图的列宽设置

    Qt中的表格控件可以通过从QTableView或QTableWidget派生子类实现.其中,QTableWidget只是对QTableView的一种简单封装.因为使用QTableView常常需要用户指 ...

  7. QStandardItemModel简单好用,QTableView带进度条

    类QabstractItemModel,QabstractListModel,QAbstractTableModel不保存数据,用户需要从这些类派生出子类,并在子类中定义某种数据结构来保存数据.与此不 ...

  8. Qt之QTableView显示富文本

    简述 对于QTableView中的显示,我们前面介绍过很多种,其中包括:文本.进度条.复选框等,今天我们介绍一下关于富文本的显示. 可能绝大多数小伙伴会通过QAbstractTableModel中的d ...

  9. Qt之QTableView添加复选框(QAbstractItemDelegate)

    简述 上节分享了使用自定义模型QAbstractTableModel来实现复选框.下面我们来介绍另外一种方式: 自定义委托-QAbstractItemDelegate. 简述 效果 QAbstract ...

  10. Qt之QTableView添加复选框(QAbstractTableModel)

    简述 使用QTableView,经常会遇到复选框,要实现一个好的复选框,除了常规的功能外,还应注意以下几点: 三态:不选/半选/全选 自定义风格(样式) 下面我们介绍一下常见的实现方式: 编辑委托. ...

随机推荐

  1. python 内置函数range和xrange

    range range 是一种类型(type),它是一个数字的序列,而且是不可变的,通常用在for循环中. class range(stop)class range(start, stop [, st ...

  2. iOS 双击tabbar刷新页面

    /*在继承UITabBarController控制器中*/ #pragma mark <UITabBarControllerDelegate> -(void)tabBarControlle ...

  3. 解决DOS批处理中一个困扰我几十个月的编码问题

    DOS批处理中的编码很有意思.&是命令连接符,先执行&左边的命令,再执行&右边的命令.|是管道操作,把左边的输出当作右边的输入.此外还有&&和||,当要表示这些 ...

  4. linux三剑客之一grep

    正则表达式(Regular Expression) 目录 起源 正则表达式是什么? 两类基本正则表达式 正则表达式元字符 Linux上文本三剑客 小试牛刀 总结 一.起源   正则表达式这个名词,相信 ...

  5. 【Luogu1879】玉米田(状态压缩,动态规划)

    懒得搞题目了 哦对了,这题双倍经验 题解 装压DP 利用位运算很容易解决相邻位的问题 其实我的还是太复杂了 具体的,更加好的位运算的写法可以参考YL大佬,但是我也搞不到他代码,因为他太强了. 然而他博 ...

  6. 从IE浏览器获取当前页面的内容

    从IE浏览器获取当前页面内容可能有多种方式,今天我所介绍的是其中一种方法.基本原理:当鼠标点击当前IE页面时,获取鼠标的坐标位置,根据鼠标位置获取当前页面的句柄,然后根据句柄,调用win32的东西进而 ...

  7. 学习ASP.NET Core Razor 编程系列一

    一. 概述 .NET Core 1.0发布的时候就想进行学习的,不过根据微软的以往的发布规律1.0版可以认为是大众测试版,2.0才算稳定.现在2.1都已经发布了预览版,之前对其"不稳定&qu ...

  8. 常见排序算法及Java实现

    先上个总图↓: ①.直接插入排序 插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并 ...

  9. WordPress用键盘左右方向键来查看上一篇和下一篇文章

    通过键盘来查看上下篇文章是不是很方便,这个其实就是条用键盘所对应的ASCII码来实现的,比如左右方向键所对应的ASCII码就是37和39,下面来看看实现怎么实现这个功能: 1.加载jQury库,当然很 ...

  10. 关于classpath

    classpath是用来设计JAVA类文件(.class)所在的路径 classpath的主要作用就是当你在一个shell窗口下执行命令时,可以从在classpath中设置的目录搜索,不用一层再一层的 ...