qt QTableView model属于界面qt子线程刷新主界面ui还是后台qt子线程刷新主界面ui

不积跬步无以至千里,不积小流无以成江海
Qt之QTableView的使用
QTableView类实现表格视图,QTableView的数据由继承QAbstractItemModel的子类models来提供。
1.使得QTableView的大小和主窗口大小一致
int width = this-&width();
int height = this-&height();
ui-&tableView-&resize(width,height);
2.表格网格线的显示与取消
ui-&tableView-&setShowGrid(true);
3.网格线画笔
ui-&tableView-&setGridStyle(Qt);
画笔的种类如下:
常量值描述
Qt::NoPen0无线
Qt::SolidLine1实线
Qt::DashLine2虚线
Qt::DotLine3点线
Qt::DashDotLine4虚点线
Qt::DashDotDotLine5虚点点线
Qt::CustomDashLine6自定义虚线
4.排序功能,设置了排序功能为true,就会开启列排序功能
ui-&tableView-&setSortingEnabled(true);
5.设置列表头
默认的表头都是按数字顺序自增的,我们可以设置表头为自己的格式,这时我们就要使用到model了
比如,我们要实现自己的表头
QStandardItemModel* model = new QStandardItemModel();
QStringList labels = QObject("频率,功率,误差").simplified().split(",");
model-&setHorizontalHeaderLabels(labels);
ui-&tableView-&setModel(model);
ui-&tableView-&show();
效果如下:
6.实现各表内容的填充
QStandardItemModel* model = new QStandardItemModel();
QStringList labels = QObject("频率,功率,误差").simplified().split(",");
model-&setHorizontalHeaderLabels(labels);
QStandardItem* item = 0;
for(int i = 0;i & 10;i++){
item = new QStandardItem(QString("%1").arg(i));
model-&setItem(i,0,item);
item = new QStandardItem(QString("%1").arg(i*2));
model-&setItem(i,1,item);
item = new QStandardItem(QString("%1").arg(i*3));
model-&setItem(i,2,item);
ui-&tableView-&setModel(model);
ui-&tableView-&show();
实现效果如下:
由上图可知,网格线的实现采用Qt::DotLine,但是内容区的字体颜色为什么是红色的呢?这就是下一个所要说的
7.数据清除
model-&clear();
8.Qt中关于CSS样式的使用
&&(" { border: none;"
"selection-background-color: #8EDE21;"
"color: red}");
其中的“color:red”即是设置表格内容的字体颜色
“border: none”表示表格无边框
“selection-background-color: #8EDE21”表示选中单元格背景色的设置。
其他样式表可以参看HTML中的CSS。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!新浪广告共享计划>
广告共享计划
QT&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(""));
&&&&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);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。qt中qtableview的使用
编辑:www.fx114.net
本篇文章主要介绍了"qt中qtableview的使用",主要涉及到qt中qtableview的使用方面的内容,对于qt中qtableview的使用感兴趣的同学可以参考一下。
俗话说难了不会,会了不难。
一个qtableview把我折腾好几天,现在总算把功能给实现了。下面是我总结的一些关于qtableview的东西(有些是从网上找的)。
新建一个qtableview添加标头使用QStandardItemModel
QStandardItemModel*
model = new&QStandardItemModel();
model-&setColumnCount(3);
//设置为3列显示内容
ui-&tableView-&setModel(m_model);
//将model控件和table控件关联
model-&setHeaderData(0,Qt::Horizontal,
tr(&姓名&)); //设置第一个字段为姓名
model-&setHeaderData(1, Qt::Horizontal, tr(&编号&));
//设置第二个字段为编号
model-&setHeaderData(2, Qt::Horizontal, tr(&年龄&));
//设置第三个字段为年龄
可以直接通过QStandardItemModel添加行,添加一行(“张三”,“12”,“22”)
model-&setItem(0, 0,
new QStandardItem(&张三&));
model-&setItem(0, 1,
new QStandardItem(&12&));
model-&setItem(0, 2,
new QStandardItem(&22&));
动态的更新表格内容:
QAbstractItemModel* model = ui-&tableView-&model();
//将QAbstractItemModel控件和table控件关联
//声明索引
index = model-&index(0, 1);
//获取第一行第二列的索引
model-&setData(index, QVariant(&13&));
//修改第一行第二列的值为13
总结,就这个修改指定项的值,这把我折腾好几天。
最终总算搞定了。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:鐩稿叧闂??
闂??閾炬帴
鎴戞?鍦ㄥ皾璇曞厑璁告垜鐨勭敤鎴烽

我要回帖

更多关于 qt 多线程 界面 的文章

 

随机推荐