嵌入式积累|表格QTableView单元中添加控件
本文主要总结在Qt5.9中,用表格类QTableView,在表格单元中添加控件用法。
想要在表格QTableView中添加控件,有多种方法,可以参考如下地址:http://qimo601.iteye.com/blog/1538364。
其中,我用的是最常用和简单的方式,使用函数QTableView::setIndexWidget(const QModelIndex &index, QWidget *widget)
void setIndexWidget(const QModelIndex &index, QWidget *widget);
用法:
tableView->setIndexWidget(standItemModel->index(10,1),m_PushButton); //向表格单元添加一个控件
【嵌入式积累|表格QTableView单元中添加控件】下面将通过一个例子展示像表格中添加控件的例子。
1.1新建一个widget工程,不要勾选ui界面。然后分别在widget.h,widget.cpp,main.cpp分别添加如下代码。
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include
#include
#include
#include
#include
#include
#include
#include class Widget : public QWidget
{
Q_OBJECTpublic:
Widget(QWidget *parent = 0);
void CreateView();
private:
QPushButton *testBtn;
QPushButton *m_PushButton;
QVBoxLayout *mainLayout;
//QTreeView *treeView;
QStandardItemModel *standItemModel;
QTableView *tableView;
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"Widget::Widget(QWidget *parent)
: QWidget(parent)
{
CreateView();
}void Widget::CreateView()
{
mainLayout = new QVBoxLayout;
//垂直布局
mainLayout->setSpacing(10);
//设置控件间距
mainLayout->setMargin(10);
//设置边缘间距
testBtn = new QPushButton("Test");
m_PushButton = new QPushButton("PushButton");
//添加QTableView代码
tableView = new QTableView;
standItemModel = new QStandardItemModel();
//添加表头
standItemModel->setColumnCount(3);
standItemModel->setHeaderData(0,Qt::Horizontal,QStringLiteral("序号"));
//设置表头内容
standItemModel->setHeaderData(1,Qt::Horizontal,QStringLiteral("名称"));
standItemModel->setHeaderData(2,Qt::Horizontal,QStringLiteral("地址"));
//向表格添加100行内容
for(int i=0;
i<100;
i++)
{
QStandardItem *standItem1 = new QStandardItem(tr("%1").arg(i+1));
QStandardItem *standItem2 = new QStandardItem(tr("第%1行").arg(i+1));
standItemModel->setItem(i,0,standItem1);
//表格第i行,第0列添加一项内容
standItemModel->item(i,0)->setForeground(QBrush(QColor(255,0,0)));
//设置字符颜色
standItemModel->item(i,0)->setTextAlignment(Qt::AlignCenter);
//设置表格内容居中
standItemModel->setItem(i,1,standItem2);
//表格第i行,第1列添加一项内容
}tableView->setModel(standItemModel);
//挂载表格模型//设置表格属性
tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignCenter);
//表头信息显示居中
tableView->horizontalHeader()->setSectionResizeMode(0,QHeaderView::Fixed);
//设定表头列宽不可变
tableView->horizontalHeader()->setSectionResizeMode(1,QHeaderView::Fixed);
tableView->horizontalHeader()->setSectionResizeMode(2,QHeaderView::Stretch);
//设定第2列表头弹性拉伸tableView->setColumnWidth(0,100);
//设定表格第0列宽度
tableView->setColumnWidth(1,200);
tableView->verticalHeader()->hide();
//隐藏默认显示的行头
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
//设置选中时整行选中
tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
//设置表格属性只读,不能编辑
//tableView->setContextMenuPolicy(Qt::CustomContextMenu);
//需要在表格使用右键菜单,需要启动该属性
//tableView->sortByColumn(0,Qt::AscendingOrder);
//表格第0列,按降序排列tableView->setIndexWidget(standItemModel->index(10,1),m_PushButton);
//向表格单元添加一个控件
tableView->setIndexWidget(standItemModel->index(10,2),testBtn);
//向表格单元添加一个控件
tableView->setShowGrid(false);
standItemModel->removeRows(0,10);
//删除从第0行开始的连续10行//mainLayout->addWidget(testBtn);
mainLayout->addWidget(tableView);
//添加控件
this->setLayout(mainLayout);
//显示垂直布局
}
main.cpp
#include "widget.h"
#include int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.resize(960,640);
w.setWindowTitle(QString::fromUtf8("表格控件QTableView用法示例"));
w.show();
return a.exec();
}
1.2程序构建运行后,结果如下图所示:
文章图片
参考内容:
http://blog.sina.com.cn/s/blog_a6fb6cc90101iadm.html
http://qimo601.iteye.com/blog/1538364
http://www.cnblogs.com/jiangu66/archive/2013/07/18/3199041.html#undefined
推荐阅读
- 1040表格和W-2表格
- 日常积累,水到渠成的必备要素
- 【46】如何积累第一批粉丝()
- 嵌入式(编译内核、根文件系统等)
- 教你如何做一个好看的表格,excel使用技巧大全
- 《讲法——从说教到赋能》??第十一章|《讲法——从说教到赋能》??第十一章 高效阅读,积累知识 读书笔记
- Java积累|Java积累 - 堆和栈
- 前端页面表格控件handsontable在vue项目中的应用
- 【素材积累day1】
- 嵌入式-外设|DDR3基础详解