添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

有的时候我们QTreeView的里面数据已经改变,但是界面却还是显示原来的数据,有的人会说用update函数,但是这个函数没啥用,

经过半天的摸索,发现了这三种方法。

第一种:使用QTreeView的

doItemsLayout()

但是这个函数最好是在主线程中调用,因为这个函数里面是哟你定时器,在非主线程中调用会报警告。

第二种:使用模型/视图框架,继承QAbstractItemModel,然后就可以使用下面两个函数来刷新。

    beginResetModel();
    endResetModel();

第三种:下面这个方法是最好的

QAbstractItemView::viewport()->update();
有的时候我们QTreeView的里面数据已经改变,但是界面却还是显示原来的数据,有的人会说用update函数,但是这个函数没啥用,经过半天的摸索,发现了这两种方法。第一种:使用QTreeView的doItemsLayout()但是这个函数最好是在主线程中调用,因为这个函数里面是哟你定时器,在非主线程中调用会报警告。第二种:使用模型/视图框架,继承QAbstractItemModel...
背景:最近用到了 treeView 控件,来显示指定文件夹里的所有文件,文件因为有更新,因此实现了一个右键菜单点击 刷新 列表的功能。 本来以为这个功能很简单,只需要把原来的 treeview 或者model删除了,重新加载一次就好了,也看到有网友提供这样类似的方法,但是自己尝试了多次都没有实现,清空model->clear()后,程序直接崩溃,貌似原因是这样做了model将不能再次被使用。。。在网上看了很多资料,都没有找到一种合适的解决办法。 解决办法:最终自己只能用笨方法解决了。思路:遍历文件夹中的文件与tr
最近开发redis可视化ui,连到了阿里云上的redis,这个redis的hash动辄好几百条 数据 ,拿到后写到 QT ableview中。测试良好。 但测试一段时间后,点了几十条hash,拿到了几十条hash 数据 QT ableview也更新了几十次,在进行其他操作的时候,出现了程序崩溃。 于是就想,是不是发生了内存泄漏。 假设有一个 QT ableview,名叫table 先看下面的代码,功能是清空TableView void clear TreeView (){ ui->view->setM
QTreeView 处理大量 数据 (使用1000万条 数据 ,每次都只是部分 刷新 ) 如何使 QTreeView 快速显示1000万条 数据 ,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习。 我开始使用的 QT reeWidget 控件来显示我的 数据 ,发现该控件在显示10000行以下的 数据 还可以应付的过来,但超过100...
对于一些 数据 量小的列表我们使用QListWidget往往能满足开发的需求,但是对于大 数据 量的展示来说(几十万,上百万)来说的话,全部加载是一个不是很合适的方法。因此我们使用MVC,这里可能应该叫MVD(model,view,delegation)。这样做个人认为有两个好处: 1.效率问题,view和delegation配合只负责从model中取显示需要的 数据 ,因此带来高效。 2.model的 数据 可以由不同view来显示。 这里的话封装下通用QListView的通用方法(Tree和Table之后做),去
移植同事的代码,其中有一个功能给 TreeView 添加节点,主节点添加后不显示,子节点就没有问题,原来是少了行代码。 TreeView .Items.Add(nil, 'NewItem'); TreeView .Refresh; TreeView 第一次用,经验太少了,顺便记录下添加子节点的代码: procedure AddTreeNode( TreeView : T TreeView ; const
Qt 开发过程中,我发现树控件即 QTreeView 使用的非常频繁。 各种批量展示和编辑信息的地方,都用得上该控件。 我的项目在使用 QTreeView 过程中,用到了各种常规、不常规的功能,并进行过各种改造。 这里将这些知识与技巧作一个总结,分享给大家。
QTreeView 是一个基于模型的视图,用于显示层次结构的 数据 。当需要对树形结构中的元素进行操作时,通常需要使用右键菜单。 QTreeView 中的右键菜单可以通过QMenu类进行创建。具体步骤如下: 1. 创建QMenu对象,例如menu = QMenu(self)。 2. 为菜单添加需要的动作,例如action1 = QAction('动作1', self)。 3. 将动作添加到菜单中,例如menu.addAction(action1)。 4. 将菜单设置为 QTreeView 内置的右键菜单,例如 treeView .setContextMenuPolicy( Qt .CustomContextMenu)。 treeView .customContextMenuRequested.connect(self.showContextMenu)。 5. 在右键单击事件中,获取鼠标点击的位置并弹出菜单,例如: def showContextMenu(self, pos): globalPos = self. treeView .mapToGlobal(pos) self.menu.exec(globalPos) 在这个过程中,需要注意的是, QTreeView 需要先设置ContextMenuPolicy属性为 Qt .CustomContextMenu才能使用右键菜单,同时右键单击事件也需要通过connect()函数进行绑定。创建菜单的过程与使用QMenu对象的方法是类似的,通过addAction()方法向菜单中添加动作,通过执行菜单的exec()方法即可弹出菜单。