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

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)); }

老板会喜欢有能力的员工,还是喜欢能力一般但是人际关系处的非常好的员工,你怎么看?这个问题很有趣,考验着老板怎么样去管理能力强和人际关系处理能力强两者之一的人,同时需要老板层面的喜欢,相信这个人不会是基层的员工,怎么也得是个管理者才会引起老板的注意了。微小憩也算新员工入职10天,打电话说不干了就不来上班了,该不该给他发工资?正常来说,是需要给工资的哦。虽然这种员工挺可恶的。01在劳动合同法里,对于员工的工资,有如下明确的确定第二十条试用期工资劳动者在试用期的工资不得低于本单位相同岗位最低档工资或者劳动大家说说人的面相会改变吗?俗语天生的眉毛,地长的相脸上有麻子抹不光但一个人若是长期生气或长期在心存怨恨的环境下生存,其五官因受其条件反射的作用,面相也会变成眉翘眼凸,口斜鼻歪,面目狞狰之恶相反之在通过自己长有人说很多游戏都是靠MOD火起来的,DOTA就是其中之一,对此你怎么看?一个游戏能否被称为神作需要看的是游戏的品质内容BGM等多方面因素。但有的游戏这些因素并不突出于其他游戏却能被玩家们奉为神作,来源于游戏开通了一个拓展功能MOD。为什么MOD对游戏的玩游戏玩到该游戏停止运营是怎样的一种体验?wow九城的关服,还有指环王ol的关服。虽然许多人在骂九城,但是真的当九城走了,好多人还是非常怀念的。我记得当时大家都不愿意下线,坐在一起,直到服务器断开的那一刻。关于魔兽世界的回为什么有那么多女排国手加盟了深圳女排?深圳女排是排超联赛的一支新军,它的成立也吸引了众多国内球员的加盟。加盟的球员也分为多个层次,她们来深圳女排的目的也有所不同吧。下面也来大致来分一类第一批球员,基本上各省队打不上主力为什么足彩任九很多彩友都集中失利在一场球上?我先来回答,原因大概有四。一是庄家给出的赔率高,如皇马主场对鱼腩谢里夫,威廉希尔给出的最高负赔是34。00,那不勒斯对莫斯巴达,威廉希尔给出的最高负赔是19。00,都相当高了,彩友入门级的hifi音响是惠威好还是雅马哈好?雅马哈不知道怎么样。惠威值得你拥有。当年自己小烧的时候,自己让木工(也有一些音箱功底)严格工艺安装推荐的尺寸材料制作了一对落地倒相迷宫哑铃式音箱,成本价400元(大概在1995年)昆仑表(CORUM)与约阿希姆霍斯利,合作推出的金桥腕表怎么样?昆仑表成立于一九五五年,在一九八零年发布了著名的GoldenBridge金桥腕表,内部搭载了第一款长方形机芯,此后不断发展和完善,成为制表行业最富朝气的品牌之一。二零一八年,钢琴音在哈尔滨的哪个位置买房最后悔?在哈尔滨市松北新区买房子真的后悔啊,当时看到新区规划,又说地铁,又说公园,又说学校的,看到样品房就决定买了,可是富力城开发商太缺德了,下来的房子,与样品房根本不一样,进户门朝里开,长安CS75自动1。5T的哪款比较好?落地大概多少钱?长安CS75定位是一款紧凑型SUV,自上市以来销量也超过一百万辆,是一款综合实力非常不错的车型,主要竞争对手是荣威RX5博越等车型,17月累计销量7。9万多台,8月份更是达到了1。
引力波带来的新成果高原兴谢懿斯图尔特克拉克通过观测和发现全新的引力波会有助于解开宇宙中最深奥的谜题。2017年10月,诺贝尔物理学奖授予了推动引力波探测的三位物理学家。100多年前,爱因斯坦就预言了世界第一!嫦娥六号将带月球背面2000克月壤着陆月球南极有多难头条创作挑战赛嫦娥五号任务,我国首次通过嫦娥系列飞船成功登陆月球成功采样1731克月壤样品,这是人类21世纪首次采集月球土壤样品,距离上次月壤采集已经时隔44年了。近日,我国正式公为留在太空,俄罗斯或不顾宇航员,提议为国际空间站延寿到2028年据央视新闻报道,国际空间站俄罗斯部分设计委员会,建议俄方部分使用期限延长到2028年。目前这还只是建议,并未实行。该方案也没有说俄舱段究竟是脱离国际空间站独立运行,还是仍旧保持现有立式全彩微型发光二极管制成美国麻省理工学院研究团队发明了一种堆叠二极管以创建垂直多色像素的方法,该方法可用于制作更清晰无缺陷的显示器。研究成果近日发表在自然杂志上。多年来,单个像素的尺寸不断缩小,使得更多的量子计算(九)复合系统与联合测量复合系统与联合测量拥有两个或两个以上的量子比特的量子系统通常被称为复合系统(compositesystems)。单量子比特系统的描述与测量已有所了解,那么多个量子比特的系统该如何描JACS张涛院士课题组对单原子物种动态调控及定量分析取得突破进展本文来自微信公众号XMOLNews2011年张涛院士首次提出单原子催化概念以来,单原子催化剂(SACs)由于其特殊的活性选择性以及原子利用率最大化等特点,逐渐成为催化领域的研究热点三方交易!湖人活塞等三队商讨交易,乐福勒韦尔驰援詹姆斯北京时间2月8日,NBA常规赛正在火热进行当中,在欣赏精彩的比赛同时,NBA的场外交易动态同样值得关注。湖人错过欧文后,管理层并没有放弃交易补强,他们还是希望为詹姆斯浓眉寻求更好的欧洲反击金元足球,曼城接力尤文被指控,瓜迪奥拉或在寻找新东家英超官方周一(6日)起诉了曼城超过100条关于财政问题的控罪。尤文图斯因为财务造假被罚分的事件还没完全完结,曼城又再次因为财政问题被指控,这是要对金元足球发起反击的节奏。英国太阳报詹姆斯感言谢谢所有人的热爱与牺牲没有这些我不会是今天的我今日对雷霆第三节最后时刻,詹姆斯用一记后仰跳投登顶NBA历史得分王宝座!这球进后,比赛进入暂停,萧华与贾巴尔来到比赛场内。詹姆斯随后发言说我想谢谢湖人的忠实球迷们,感谢你们的支持,黄绮珊模样大变差点认不出来,我知道她为什么火不起来了说到华语乐坛最顶尖的实力女唱将,有一个女歌手不得不提到,她就是黄绮珊。必须承认,黄绮珊的唱功在女歌手中几乎可以说是天花板的存在,鲜有女歌手能跟她匹敌。可即便黄绮珊具备超强的实力,她以为嫁富豪,实际是诈骗犯,入狱破产,逃到国外,这8位女星太惨虽然娱乐圈的女星们本身身家不菲,但嫁入豪门的女星还是有不少,只是女星嫁入豪门并非没有风险,遇人不淑很可能人财两失。1,王丽坤这几天娱乐圈最大的瓜莫过于W女星丈夫诈骗的传闻,而随着传