永发信息网

QTableView怎么实现一行一行的输出显示

答案:1  悬赏:30  手机版
解决时间 2021-04-05 13:04
QTableView怎么实现一行一行的输出显示
最佳答案
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);
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1987年阴历6月生是什么星座
单选题下列关于DNA分子复制过程的有关叙述,
jd.上买了东西 手机号码输错了 货发了 怎么办
我在捷信贷款一个3000的手机贷,快一年了没有
电热水器用 防电墙 还是 漏电开关 的好? 那
小学四年级解决问题30道
公务员考试现在都招科员,那办事员还有吗?
不言不语好风景前一句,有哪些关于赞美山水好
函数f(x)=[x[x]](x∈R),其中[x]表示不超
浙江南浔哪里比较好玩? (公园 最好是免费的
上长下短且平行的四边形是梯形吗?
地理:各个国家的地图像什么动物
酷狗音乐怎么设置单歌重复播放
请问O型圈线径粗细主要影响什么?该根据什么
八一阅兵口号喊的,运动会队形和口号有创意
推荐资讯
辞退群主的通知怎么写
小说 男主角 名 多点 霸气 三个字 谢谢
谜语眼高手低打一字
西宁二十一中好不好,乱吗?是住校的吗?和黄
涑水记文阅读答案
太玄经是不是金庸小说里最神
我的电脑没有numlock键 怎么办
5.请模仿文中华波浪线句,再描写两处秋天的景
我报警该提供什么样的线索呢?
一本小说主人公叫天石,小说一开头是在另一个
脑子里总是想象家里的亲人出意外的事情,我是
单选题最能突出包身工被奴役的形象,反映包身
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?