QTableView view(this);QStandardItemModel model(this);/*设置表头水平标题*/model.setHorizontalHeaderItem(0,new QStandardItem(\"Name\"));model.setHorizontalHeaderItem(1,new QStandardItem(\"Sex\"));model.setHorizontalHeaderItem(2,new QStandardItem(\"Age\"));model.horizontalHeaderItem(0)->setFont(QFont(\"Helvetica\",20,50)); //设置标题字体/*设置表头垂直标题*/model.setVerticalHeaderItem(0,new QStandardItem(\"No.1\"));model.setVerticalHeaderItem(1,new QStandardItem(\"No.2\"));model.setVerticalHeaderItem(2,new QStandardItem(\"No.3\"));/*设置列表条目数据*/QPixmap pix(\":user.png\");pix = pix.scaled(24,24,Qt::KeepAspectRatio);QStandardItem *itemA=new QStandardItem();itemA->setData(pix,Qt::DecorationRole); //设置条目图标itemA->setData(\"A\",Qt::DisplayRole);itemA->setData(\"A:tooltip\",Qt::ToolTipRole);itemA->setData(QFont(\"宋体\",12,QFont::Bold,true),Qt::FontRole); //设置条目字体itemA->setData(Qt::AlignCenter,Qt::TextAlignmentRole); //设置条目中心对齐//可以实现按数值排序,否则的话\"2\">\"123\"itemA->setData(Qt::DisplayRole, 2);QLinearGradient linearGradient(0,0,100,20);linearGradient.setColorAt(0.2, Qt::white);linearGradient.setColorAt(0.6, Qt::green);linearGradient.setColorAt(1.0, Qt::black);itemA->setData(QBrush(linearGradient),Qt::BackgroundRole); //设置条目背景色(为渐变色)model.setItem(0,0,itemA);model.setItem(0,1,new QStandardItem(\"B\"));model.setItem(1,0,new QStandardItem(\"C\"));model.item(0,1)->setTextAlignment(Qt::AlignCenter); //设置条目居中对齐/*将数据模型的第一列进行下降排序(从大到小,不会进行整行排序)*/model.sort(0,Qt::DescendingOrder);/*根据视图里的第一列数据,进行整行大小排序*/view.sortByColumn(0);/*设置视图能够自动使能排序*/view.setSortingEnabled(true);/*设置视图是否支持自动滑动*/view.setAutoScroll(bool enable); /*设置选中一行后,标题的字体不会加粗*/view->horizontalHeader()->setHighlightSections(false);/*设置列宽不可变动,在5.X后改为了setSectionResizeMode()*/view.horizontalHeader()->setResizeMode(QHeaderView::Fixed);/*设置行宽不可变动*/view.verticalHeader()->setResizeMode(QHeaderView::Fixed);/*设置用户选择模式, NoSelection表示不能选择表格*/view.setSelectionMode(QAbstractItemView::NoSelection);/*隐藏垂直标题*/view.verticalHeader()->hide();/*设置用户选择时,只能选中一行*/view.setSelectionMode(QAbstractItemView::SingleSelection);//设置选择模式,表示只能选中单个view.setSelectionBehavior(QAbstractItemView::SelectRows);//设置选择行为,表示只能选择一行(也可以设置为列,或者单个Item项目)/*设置表格不可编辑*/view.setEditTriggers(QAbstractItemView::NoEditTriggers);/*设置表头的显示与隐藏*/view.horizontalHeader()->setVisible(false);view.verticalHeader()->setVisible(false);/*禁止显示网格线*/view.setShowGrid(false);/*禁止显示滚动条*/view.setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);/*设置行列的高宽*/view.setColumnWidth(0,50); //设置column0(第1列)的宽度为50,必须要设置好model后,再来设置宽度 view.setRowHeight(0,30); //设置row0(第1行)的高度为30,必须setModel()后,再来设置高度view.resizeRowsToContents(); //更据当前内容自动调整行距view.resizeColumnsToContents(); //更据当前内容自动调整列距/*禁止焦点(取消QTableView选中后的虚线框)*/view.setFocusPolicy(Qt::NoFocus);/*获取鼠标当前位于视图的哪个index位置*/qDebug()<
合并单元格提醒
(资料图)
数据更新后,还要继续使用setSpan再次合并(主要是要对全表格进行重新的单元格合并,已经合并过的地方行列又要重新进行新的合并,因为数据已经更新),这时不能直接使用setSpan,而是要先把QTableView的row还原为原来没有合并行列的情形,再次使用setSpan
对于QStandardItem的setData()成员 函数的第二个参数role 是模型数据角色
当role值不同时,则显示在视图上的方式也会不同
对于role角色,常用的值有:
Qt::DisplayRole 0 以文本方式显示数据(QString)
Qt::DecorationRole 1 将数据作为图标来装饰(QIcon,QPixmap)
Qt::EditRole 2 可编辑的数据信息显示(QString)
Qt::ToolTipRole 3 作为工具提示显示(QString)
Qt::StatusTipRole 4 作为状态栏中显示的数据(QString)
Qt::WhatsThisRole 5 作为帮助信息栏中显示的数据(QString)
Qt::FontRole 6 设置字体(QFont)
Qt::TextAlignmentRole 7 设置模型数据的文本对齐(Qt::AlignmentFlag)
Qt::BackgroundRole 8 设置模型数据的背景色(QBrush)
Qt::ForegroundRole 9 设置模型数据的前景色,比如字体(QBrush)
实现右击菜单
当用户在QTableView视图里右击鼠标时,便会触发一个QEvent::ContextMenu类型的事件,所以通过事件过滤器来实现右击菜单效果
步骤:
定义菜单对象(QMenu)
通过QMenu的addAction()函数,添加子项,并连接到槽函数
定义事件过滤器,判断是否是QTableView的QEvent::ContextMenu事件
判断成功,则调用menu.exec(cursor().pos()),在当前鼠标位置打开菜单
效果:
代码如下
Widget.h:
#ifndef WIDGET_H#define WIDGET_H#include class Widget : public QWidget{Q_OBJECTQTableView view;QStandardItemModel model;QMenu menu;public:explicit Widget(QWidget *parent = 0);bool eventFilter(QObject* obj, QEvent *evt);public slots:void onDelete(void);};#endif // WIDGET_H
Widget.cpp:
#include \"widget.h\"Widget::Widget(QWidget *parent) :QWidget(parent),view(this),model(this),menu(this){model.setItem(0,0, new QStandardItem(\"A\"));model.setItem(0,1, new QStandardItem(\"B\"));model.setItem(1,0, new QStandardItem(\"C\"));model.setItem(1,1, new QStandardItem(\"D\"));model.setItem(2,0, new QStandardItem(\"E\"));model.setItem(2,1, new QStandardItem(\"F\"));model.setItem(3,0, new QStandardItem(\"G\"));model.setItem(3,1, new QStandardItem(\"H\"));/*设置视图只能选中一行,取消焦点,禁止编辑*/view.setFocusPolicy(Qt::NoFocus);view.setEditTriggers(QAbstractItemView::NoEditTriggers);view.setSelectionMode(QAbstractItemView::SingleSelection);view.setSelectionBehavior(QAbstractItemView::SelectRows);view.setModel(&model);view.installEventFilter(this);menu.addAction(\"删除\",this,SLOT(onDelete())); //设置菜单项,并连接槽函数}void Widget::onDelete(void){model.removeRow(view.currentIndex().row()); //更据当前鼠标所在的索引的行位置,删除一行}bool Widget::eventFilter(QObject* obj, QEvent *evt){if(obj == &view && evt->type() == QEvent::ContextMenu){if(view.currentIndex().isValid()==true){ menu.exec(cursor().pos()); //在当前鼠标位置上运行菜单menu对象}}return QWidget::eventFilter(obj,evt);}
main函数:
int main(int argc, char *argv[]){QApplication a(argc, argv);Widget w;w.show();return a.exec();}
【领 QT开发教程 学习资料, 点击下方链接莬费领取↓↓ ,先码住不迷路~】
点击这里:
QTableViewview(this);QStandardItemModelmodel(this); *设置表头水平标题* model setHorizontalHeaderItem
1、合肥职业技术学院合肥职业技术学院是合肥市属综合性高职院校,是省教育厅确立的安徽省首批16所地方技能
北京市气象台2023年5月20日20时10分发布沙尘蓝色预警信号:受上游输送和冷空气大风影响,预计20日21时至21
《塞尔达传说:王国之泪》现已上线,本作除了引入“究极手”“余料建造”等新能力,游戏中包括主角林克在内
1、体验很差,接收简历匹配度很低不说,合同霸王条款太多,我公司用了一年刷新简历花了很多钱,就招上一个
《2023年高考减压调节方法》由高考资讯网发布,主要内容:各位2023年的高考考生注意了!距离2023年高考仅剩下
黄鹤楼见证18对新人举行华服集体婚礼---5月20日,武汉黄鹤楼公园,举行集体婚礼的新人们在黄鹤楼前合影。当
文、图 羊城晚报全媒体记者杨锦强通讯员邱思瑜关玉杭5月19日,惠州汝湖镇为激活汝湖渔歌活力,促进非物质文
作为朔州市唯一没有煤炭资源的县,应县瞄准陶瓷产业,探索县域经济全面振兴发展之路。韦亮摄中新网朔州5月2
1、这句话是出自宋代诗人苏轼的《水调歌头》。2、但愿人长久,千里共婵娟。这句话的意思是只希望自己思念的
在娱乐圈,明星出轨离婚的案例数不胜数,但似乎有一个被默认的传统,男性出轨很容易被大众接受,大家甚至会
【广东计划年内实现集中停放充电设施全覆盖】19日在广东省新闻办举行的2023年消防安全重大风险隐患大检查大
麒麟花园环岛位于麒麟区城区中心,周边分布有美佳华商业广场、麒麟巷、艺术剧院、曲靖市中医院、高快客运站
wps怎么做表格?这是许多在用wps软件问得最多的问题,其实想做个简单的表格是不难的,只需要几步就可以完成
1、硬脑,拼音是yìngnǎo,硬脑一厚而坚韧的双层膜。2、外层是颅骨内面的骨膜,仅疏松地附于颅盖,特别是
西索虽然疯狂跟自负很像铃木,但是却有着完全不同于铃木的强大实力。西索在对“小丑”这种角色的演绎,估计
使用前应先检查零点:微分筒前沿与横刻线对其,主轴刻度基线与微分筒的零刻线对齐。测量物体时:首先旋转棘
1、根据民族的不同,具体的时间也有所差异。2、火把节在古代被称为 "星回节 ",俗有“星回于天而除夕”之说
1、《胡希恕讲伤寒杂病论》(冯世纶)电子书网盘下载免费在线阅读链接:提取码:kiqj书名:胡希恕讲伤寒杂
贾浩楠发自副驾寺智能车参考|公众号AI4Auto“预言家”马斯克最新言论:一些公司逃不过破产的命运。什么公司
同花顺金融研究中心5月19日讯,有投资者向海得控制提问,公司在工业信息化市场大概占据多少份额 公司回
近日,泉果基金第二只公募基金泉果思源三年持有期混合型基金“上新”,老将刚登峰担任基金经理。该基金设置
原油72 15多单仓位减半,黄金空单获利持有!原油:日线趋势仍空,一小时周期方向多,晚间操作思路顺应一小
面向Web3 0的区块链SIM卡问世 据科技日报报道,近日,上海树图区块链研究院与中国电信股份有限公司研究
1、麻辣烫。2、红颜墓。3、动了情的痞子。4、我也想要当网红。5、别笑了眼泪都快掉了。6、耿耿星河。7、十
同花顺财经讯合力科技发布公告,公司2022年年度权益分配实施方案内容如下:以总股本15680 00万股为基数,向
郑商所:自2023年5月23日当晚夜盘交易时起,纯碱期货2309合约的日内平今仓交易手续费标准调整为3 5元 手。
格隆汇5月19日丨开普检测(003008 SZ)于2023年5月18日参与河南辖区上市公司2023年投资者网上集体接待日活动
1、19日。2、记者从“7旬老人为保护孙儿砍伤闹事者获刑”一案当事老人杨成杰的辩护律师处获悉。3、临高县人
截至2023年5月19日收盘,ST国华(000004)报收于10 81元,上涨0 65%,换手率1 74%,成交量2 07万手,成交额2212 22万元。
广告
X 关闭
广告
X 关闭
管好居家“神兽” 家长应先“自救”
疫情中的导游危中寻机
花钱就能“随心改”?代改IP地址暗藏隐私泄露风险
网上N95、KN95口罩宣传花样太多 信科学别信忽悠