范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

QtQTreeView简单使用

  QT-QTreeView使用方法
  QTreeView: 用于显示树状结构数据,适用于树状结构数据的操作。  一、初始化
  利用QStandardlternModel来初始化数据,标准的基于项数据的数据模型类, 每个项数据可以是任何数据类型。  // 初始化model QStandardItemModel* m_standardItemModel = new QStandardItemModel();  // 使用model设置QTreeView表头 m_standardItemModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("资源")));   // TreeView控件载入model ui.m_treeView->setModel(m_standardItemModel);  // 展开数据 ui.m_treeView->expandAll(); 二、节点添加数据
  利用QStandardItem创建根节点与子节点的Item,并向内填充数据。数据类型可以为QString等字符,也可以是常规的变量类型。  // 创建根节点,抽象Item,并没有实际数据 QStandardItem* itemRoot = m_standardItemModel->invisibleRootItem();  // 创建并添加Item的第一个子节点 QStandardItem* itemCam = new QStandardItem(QStringLiteral("相机")); itemRoot->appendRow(itemCam);  // 向第一个子节点itemCam添加子节点数据 QList camList; camList.append(new QStandardItem("cam1")); camList.append(new QStandardItem("cam2")); camList.append(new QStandardItem("cam3")); itemCam->appendRows(camList);  // 创建并添加Item的第二个子节点 QStandardItem* itemImg = new QStandardItem(QStringLiteral("图片")); itemRoot->appendRow(itemImg);  // 向第二个子节点itemImg添加子节点数据 QList imgList; imgList.append(new QStandardItem("img1")); imgList.append(new QStandardItem("img2")); imgList.append(new QStandardItem("img3")); itemImg->appendRows(imgList);
  显示如下:
  三、QTreeView节点鼠标点击事件1.1 鼠标单击事件响应类型
  1、当我们将鼠标停靠在指定节点内并点击时,我们需要触发鼠标选中的item发生变化,此时会有QModelInex发生变化。
  相关参数详解:
  参数
  功能
  QModelIndex&
  返回item的row(), colmun()以及父节点
  m_treeViewz->selectionModel()
  选中当前鼠标单击的TreeView的model item项
  &QitemModel::currentChanged
  鼠标选择item事件响应
  &QItemSelectionModel::currentChanged
  跟踪视图中的选定项
  代码如下:  // 鼠标左键单击槽函数 void _on_image_tree_currentChanged(const QModelIndex& current, const QModelIndex& previous);   // 槽函数连接 connect(ui.m_treeView->selectionModel(), &QitemModel::currentChanged, this, &on_image_tree_currentChanged);  // 槽函数 QtDemos::on_image_tree_currentChanged() {     // 你的操作:         // 从索引index里面获得item指针,model是tree的数据model,这里item数据类型为QStandradItemModel*     QModelIndex index = current.sibling(current.row(), 0);          // 获取当前item的子节点index note:子节点只有一行的情况下     QStandardItem* item = mTreeViewModel->itemFromIndex(index);     // 根据index获取当前item     if(item)     {         // 处理代码         // int indexCurrentItem = index.row() 	// 获取item的行号         // QString text = item->text(); 		// 获取item的文本         // m_standardItemModel->itemFromIndex(index)->text() // 通过index获取item文本     } }
  四、其他操作
  1、节点设置checkBox  itemCam->setCheckable(true); itemImg->setCheckable(true);
  2、节点添加图标
  【note】:只能添加png, jpg等格式文件,无法添加.ico图标文件  itemCam->setIcon(QIcon("C:/Users/admin/Desktop/Alexnet_Structure.png"));
  3、节点不可编辑  ui->m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
  完整代码:
  4、右键菜单  //打开右键菜单属性 ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);  //右键菜单 menu = new QMenu(ui->treeView); menu->addAction("添加"); menu->addAction("删除");
  最终效果
  五、完整代码QtDemos.h#pragma once  #include  #include "ui_QtDemos.h" #include  #include   class QtDemos : public QMainWindow {     Q_OBJECT  public:     QtDemos(QWidget *parent = Q_NULLPTR);  private:     Ui::QtDemosClass ui;  private slots:     // QTreeView鼠标左键选中子节点事件响应槽函数     void _on_m_treeView_current_changed(const QModelIndex& current, const QModelIndex& previous);     void _on_m_treeView_MenuPopup(const QPoint &pos); }; QtDemos.cpp#include "QtDemos.h" QtDemos::QtDemos(QWidget *parent)     : QMainWindow(parent) {     ui.setupUi(this);          // 1.初始化model QStandardItemModel* m_standardItemModel = new QStandardItemModel();  // 2.使用model设置QTreeView表头 m_standardItemModel->setHorizontalHeaderLabels(QStringList(QStringLiteral("资源")));   // 3.创建根节点,抽象Item,并没有实际数据 QStandardItem* itemRoot = m_standardItemModel->invisibleRootItem();  // 4.创建并添加Item的第一个子节点 QStandardItem* itemCam = new QStandardItem(QStringLiteral("相机")); itemRoot->appendRow(itemCam);  // 5.向第一个子节点itemCam添加子节点数据 QList camList; camList.append(new QStandardItem("cam1")); camList.append(new QStandardItem("cam2")); camList.append(new QStandardItem("cam3")); itemCam->appendRows(camList);  // 6.创建并添加Item的第二个子节点 QStandardItem* itemImg = new QStandardItem(QStringLiteral("图片")); itemRoot->appendRow(itemImg);  // 7.向第二个子节点itemImg添加子节点数据 QList imgList; imgList.append(new QStandardItem("img1")); imgList.append(new QStandardItem("img2")); imgList.append(new QStandardItem("img3")); itemImg->appendRows(imgList);  // 8.TreeView控件载入model ui.m_treeView->setModel(m_standardItemModel);  // 9.展开数据 ui.m_treeView->expandAll();  // 槽函数 connect(ui.m_treeView->selectionModel(), &QItemSelectionModel::currentChanged, this, &QtDemos::_on_m_treeView_current_changed); connect(ui.m_treeView, &QTreeView::customContextMenuRequested, this, &QtDemos::_on_m_treeView_MenuPopup);  // 其他操作  // 节点设置checkBox itemCam->setCheckable(true); itemImg->setCheckable(true);  // 节点设置图标 itemCam->setIcon(QIcon("C:/Users/admin/Desktop/Alexnet_Structure.png"));// 只能添加png, jpg等格式文件,无法添加.ico图标文件  // 节点不可编辑 ui.m_treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);  // 右键菜单 ui.m_treeView->setContextMenuPolicy(Qt::CustomContextMenu); }  void QtDemos::_on_m_treeView_current_changed(const QModelIndex& current, const QModelIndex& previous) {     // 你的操作 ...     QModelIndex index = current.sibling(current.row(), 0); //子节点只有一行的情况下 }  void QtDemos::_on_m_treeView_MenuPopup(const QPoint& pos) { 	QMenu* menu = new QMenu(ui.m_treeView); 	menu->addAction(QStringLiteral("添加")); 	menu->addAction(QStringLiteral("删除")); menu->exec(ui.m_treeView->mapToGlobal(pos)); }

中国男篮一哥或将回归CBA,土豪球队或成最大赢家众所周知,这个赛季周琦在澳大利亚NBL墨尔本凤凰队打的并不出色,在联赛还剩下几轮的情况下,周琦提前回到国内,年前人一直在海南。周琦回到国内,一方面是为了能有更多的时间陪伴家人,另一(体育)乒乓球WTT多哈支线赛蒯曼林诗栋晋级混双决赛当日,在卡塔尔多哈进行的2023年WTT多哈支线赛混双半决赛中,中国组合蒯曼林诗栋以3比0战胜队友张瑞袁励岑,晋级决赛。1月25日,蒯曼(左)林诗栋在比赛中。新华社发(尼库摄)1月一夜交易6大动态勇士总经理引关注,篮网欲交易3人补强锋线一据NBA记者SamAmico透露,步行者对队内年轻阵容感到满意,对于希尔德与杜阿尔特两名后卫,球队保持开放态度。据悉,希尔德的回报至少是一个首轮签,不知湖人还想要吗?二据美国NB赖特穆德里克为了钱去切尔西,但我不会因此而责怪他直播吧1月26日讯阿森纳传奇伊恩赖特在Arsecast播客中谈到了穆德里克,并表示能理解他为了钱加盟切尔西。在加盟切尔西之前,穆德里克曾和阿森纳紧密联系在一起。赖特说关于穆德里克,上海大鲨鱼球迷版赛程总结替补篇接上文之前着重强调了上海大鲨鱼的几位绝对主力,下面我们来说一下替补的情况。闫鹏飞这个赛季小闫来到球队的时间比较仓促,离CBA常规赛开赛临近的时候,外界还在传上海队与新疆队都有意签他2023年印尼羽毛球大师赛开赛2023年印度尼西亚羽毛球大师赛24日在雅加达开赛,在当天参赛的国羽选手中,除混双组合程星陈芳卉在资格赛中失利外,其余选手均成功晋级。本次比赛中国队有多位新面孔参加。男单方面,陆光限时赛中国军团1胜3负丁俊晖今晚率12人冲首轮北京时间1月26日(大年初五)凌晨,斯诺克2023单局限时赛结束了首个比赛日角逐,备受瞩目的中国军团在首轮表现不佳,仅广东名将曹宇鹏一人逆转晋级,而香港老将李俊威女子名将吴安仪以及还将缺战两周!队记锡安今日做了简单运球训练精神状态很好直播吧1月26日讯今日NBA常规赛,鹈鹕主场迎战森林狼。据鹈鹕随队记者OlehKosel报道,鹈鹕球星锡安赛前来到了球场上,做了一些简单的运球训练,他的精神状态很好,与教练组和队友杨幂晒蓝色短发,被网友吐槽都在当妈的人了,还在凹少女大年初三下午2点多,演员杨幂突然在某网络平台晒了一组照片,配文大过年的,什刹海走着,糖葫芦安排。瞬间引来众多粉丝网友们热评。照片上她头戴一顶黑色帽子,外面穿一件毛茸茸的白色外套,外爸爸去哪儿阿拉蕾晒写真,穿汉服喜迎春节,妹妹颜值不输姐姐阿拉蕾是爸爸去哪儿的萌娃之一,参加节目的时候,她才只有4岁,小嘴巴能说会道,十分机灵,为观众带来不少欢乐。一眨眼的功夫,阿拉蕾都已经10岁了!近日,阿拉蕾在自己的账号上分享了和妹妹盘点女明星新年写真大片赵丽颖俏皮可爱,热巴美艳,杨幂身材好迪丽热巴杏色薄纱长裙出境,两只乖巧的白兔吸引注意,仿佛是田园少女在喂养她的小动物。整体效果很是美艳,不愧出现就血洗b站的女人,漂亮又俏皮李沁一身玫瑰红绸缎长裙出境,手持金炳红灯笼,
原神阴阳师游戏性分析手游游戏性对比一是fgo,它让我开始玩并了解二次元游戏,肝得很累但真的看到喜欢的英灵时会很开心,肝也是导致我汽油的原因,那时候我的想法是fgo能出个好看又强度高的中国英灵就好了。所以后来知道有始国产独立游戏琉隐2021年最后一天上线!玩家仪式感拉满了2021年眼看着就要结束了,大家年初立下的Flag的都完成了吗?如果kingna工作室年初立下了今年一定要上线琉隐的Flag,那么他们可真是踩着点儿给完成了,因为琉隐正好就是在12原神与幻塔游戏对比不是原神比幻塔在玩法质量上强太多,而是官方宣发的策略,完全忽略了幻塔的优势,彻彻底底为了热度,抛去幻塔自己的特点来的。抛去bug问题抛去最近什么官方CM泄露国内公民身份证这些公关方英雄联盟手游拥有联盟最恶心的E技能,小法师为什么就是火不起来英雄联盟的控制技能分为很多种,类似于莫甘娜的一技能或者光辉那样的一技能,所造成的效果我们暂且统称为禁锢。亚索的风,石头人的大招所造成的效果我们统称为击飞。当然还有睡眠,压制,强制位2022年最值得期待的10款射击游戏,在新的一年开启你的射爆之旅2020年开始新冠疫情席卷全球,大家的生活也多多少少的受到了影响,各家游戏公司虽然因为疫情营收获得了增长,但游戏开发工作受到了极大的影响,近两年延期跳票的游戏越来越多,好在不少大作相信光的存在,游戏王中六大光芒使在游戏王卡片中存在着数之不清的怪兽,而有的怪兽拥有多种形态和衍生卡,今天就为大家介绍一下六只因为相信光,而获得光芒的力量,成为光芒使者的怪兽们。虽然光芒使者是游戏王卡组系列之一,不又一个老对手pio宣布退役,网友韦神比赛也看一场少一场了?相信关注绝地求生的朋友们一定都得知了一个重磅的消息,那就是在韩国赛区的GENG战队队员pio宣布正式退役,这对于绝地求生来说是一个非常遗憾的消息,关注PUBG比赛的朋友一定都知道p属于你的权力,为什么要交出去?01hr我们开始今天的话题是求之不得,我好喜欢讲这个话题,因为我特别喜欢像护士一样,一针一针把你们扎醒,让你们拿着碗,在求啊求啊的幻想中醒过来。在讲课之前我先说,有些宝宝问我,我怎新年一起追光!看草原绝美日出阳光灿烂的日子是幸福的充实的畅怀的如果你问我怎样迎接新年的到来最治愈,去草原看日出吧,一缕希望的暖阳会扫去过去一年的不安。此次,摄影师来到位于内蒙古自治区的金莲川草原,用镜头记录草CBA三消息广厦队强援来了,杜润旺状态下滑,林书豪令人失望浙江广厦队在全华班的情况下仍旧打出了不错的表现,到目前为止的第二阶段广厦队三胜一负,整体战绩十四胜三负高居联盟第三位,仍旧持续了强势火力。不过广厦队管理层并不满足于现状,他们仍旧在连续7场首发!昔日国青王牌在恒大爆发,未来有望重返国足由于俱乐部出现资金困难,中超8冠王广州恒大的外教团队和巴西裔归化球员全部离开了球队。中超联赛第二阶段争冠组,广州恒大只能以老队长郑智为代理主教练,带着全华班的阵容出战。不过他们并没