基类'QAbstractListModel'有私人复制构造函数
我有一个QT QML项目. (仍然很小) 我从UScenario模型上的listView开始,通过子类QAbstractListModel绑定listView,然后被罚款. 现在,每个UScenario都有一个UTask的列表,它也有UCondition的列表(so,Utask也要Utask也要QAbstractListModel).但是,QT创建者给了我一个错误: Core/Tasks/utask.h:6: erreur : base class 'QAbstractListModel' has private copy constructor class UTask: public QAbstractListModel ^ 所以我不确定我的问题在哪里.我尝试阅读有关QAbstractListModel vs QAbstractItemModel的文档,但我没有任何线索. 我还试图看看我是否曾经以错误的方式构建了UTask.我认为不是. /
58 2023-03-31
编程技术问答社区
为QStringListModel项设置自定义数据
我有qStringListModel QStringListModel* blocksModel = new QStringListModel(); 和从qobject继承的类 class Block : public QObject { Q_OBJECT public: Block(); Block(const Block& other); ~Block; //and other stuff here }; Q_DECLARE_METATYPE(Block*) 当我为qt :: editrole设置数据时,一切都很好,但是当我尝试为qt :: userrole设置数据时,它永远不会返回,当我获得数据时,我会看到无效的qvariant int count = blocksModel->rowCount(); blocksModel->insertRows(count, 1); QModelIndex index =
0 2023-03-29
编程技术问答社区
Python+QT中的树状视图
我需要在第一个中使用带有4列的4列树景 柱子.我已经看过树的视图,只是我不把 复选框在第一列中.我尝试了,但它使我处于每个位置 (行,列).............. 这是我的代码: import sys from PyQt4.QtCore import * from PyQt4.QtGui import * from copy import deepcopy from cPickle import dumps, load, loads from cStringIO import StringIO class myNode(object): def __init__(self, name, state, description,otro, parent=None,checked=False): self.name = QString(name) self.state = QString(state) self.des
6 2023-03-10
编程技术问答社区
可编辑的可重新排序(通过拖放)的Qt5 QTreeView例子
无法找到QT5的QTREEVIEW的不错的通用层次可重新排序示例后,我试图相应地转换可编辑的树模型示例代码. 有一个相关的问题记录在: qtreeview Qtreeview在pyqt中带有拖放支持,但是虽然它是pyqt4,这本身不是问题(无论如何我都会将其转换为pyqt;)),TreeView +抽象模型无法正常工作.至少,它不会在这里重新排序任何项目. 此示例代码也不起作用:它允许移动项目,但是将它们放置为空行,但该条目未移动. diff -up editabletreemodel.orig/mainwindow.cpp editabletreemodel/mainwindow.cpp --- editabletreemodel.orig/mainwindow.cpp 2016-06-10 08:48:56.000000000 +0200 +++ editabletreemodel/mainwindow.cpp 2016-10-25 23:20:0
14 2023-03-02
编程技术问答社区
QTableView QStandardItemModel 恢复或撤销用户条目
如何在qstandaritemmodel PopuplepulplplplableView上撤消或恢复用户条目? 我已将数据调整信号与一个处理程序连接起来,我在其中验证数据... connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(validateData(QModelIndex,QModelIndex))); ...但是,如果用户条目错了,我想恢复或撤消用户条目到该项目的先前值. 我已经阅读了从qabstractitemmodel继承的Reverver()成员,但我不明白它的工作原理.文档说:"让模型知道它应该丢弃缓存的信息."但是我不确定用户输入的数据是缓存还是已存储在模型上. . 无论如何,如果我尝试... model->revert(); ...在错误的用户条目后它不起作用. 预先感谢! 解决方案 查看Qt的 uto框架.文档中的介绍说:
12 2023-03-02
编程技术问答社区
QTreeView:维护QModelIndex和底层数据之间的映射关系
我有从QTreeWidget迁移到QtreeView的问题.对于QTreeWidget而言,显而易见且微不足道的事情似乎是不可能的.具体来说:我有一个带有树视图的主窗口. TreeView使用我实现的模型,但不是直接 - 通过QSortFilterProxyModel设置为树模型.现在,用户激活树中的项目,主窗口会收到信号itemActivated(QModelIndex item).我该如何判断哪个基础数据被激活?数据是一个向量,因此,使用TreeWidget,我可以将项目的向量索引存储在QTreeWidgetItem中,但是QModelIndex甚至没有setData api. 解决方案 您可以在源模型中定义自定义角色,将基础数据或标识符(如果有)返回为变体.这具有与任何数量的代理模型一起使用的优势,因为数据将通过未更改的模型传递,现在需要索引的映射. 假设一个模型列表联系人,具有值结构/类Contact保存数据. 这需要通过Contact进行注册. class
8 2023-03-01
编程技术问答社区
在树状视图中过滤模型项目
我有一个模型类: class ItemModel : public QAbstractItemModel { Q_OBJECT public: enum ItemRoles { ItemRole = Qt::UserRole + 1, NameRole, IdRole, FilterRole // To be used in filtering }; QVariant data(const QModelIndex &index, int role) const; } 模型根据角色返回数据: QVariant ItemModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); Item *item = item
6 2023-03-01
编程技术问答社区
QTableView的排序信号?
i使用QTableView + QStandardItemModel显示一些数据(存储在其他数据结构中的数据),此表视图为 sortable . . 由于可以排序,在对此模型进行排序时,我还需要对存储数据的顺序进行排序.我尝试实现一个用于排序信号的插槽,但是我不知道在单击标头开始分类操作时发出了什么信号. 我尝试了点击信号,但仅针对数据行发射,而不是针对headerdata. 如果我想在排序QtableView + QStandardItemModel时,该怎么办? 解决方案 可以通过 获得视图的标题 QHeaderView * QTableView::horizontalHeader () const 现在,使用获得的QHeaderView,您可以将一个插槽连接到信号, void QHeaderView::sectionClicked ( int logicalIndex ) [signal]. 从QT 4.5文档中,单击部分时发出此信号.该部
54 2023-03-01
编程技术问答社区
QML中包含对象的QAbstractListModel的缺点是什么?
QT提供了将C ++模型与QML QStringList QObjectList QAbstractItemModel 两个前者非常易于使用,例如QObjectList: // in C++ QList dataList; dataList.append(new DataObject("Item 1", "red")); // in QML ListView { model: dataList delegate: Text { text: name } } ,但他们俩都有一个强烈的警告: 注意:没有办法知道一个内容 QLIST发生了变化.如果QLIST改变,则有必要重置 模型[...] QAbstractItemModel很难与对象一起使用,因为对象属性没有直接暴露,因此将它们保持在同步需要大量努力. 但是,可以将A QList包裹在QAbstractItemModel中并获得超简单的模型.请参阅此处:实施1 ,
10 2023-02-25
编程技术问答社区
了解Qt视图-模型架构:在QAbstractItemModel实现中何时创建和如何清理索引?
我目前正在将我的项目从QTreeWidget迁移到QtreeView,并且由于对QT模型视图设计的了解不足而造成了很多问题.到目前为止,即使在QT示例中我也找不到答案. 我已经实现了我的QAbstractItemModel.我要返回字符串,以在QTreeView通过data方法中查看.现在,基础数据将在运行时发生变化.为了解决这个问题,我的模型已订阅emit dataChanged(index(0,0), index(rowCount() - 1, LastColumn));的通知.问题是:如何创建和清理QModelIndex对象? QT示例之一reblemplements index方法,所以我也做了相同的操作: QModelIndex CFileListModel::index(int row, int column, const QModelIndex &/*parent*/) const { QModelIndex index = createIndex(ro
12 2023-02-24
编程技术问答社区
pyqt: 试图理解QAbstractDataModel和QTreeView的insertrows
我正在使用pyqt使用QABSTRACTITEMMODEL来管理树视图.到目前为止,我已经成功实施了它,使我可以加载数据,扩展和折叠并编辑值. 但是,我无法做的一件事是将我的头缠绕在插入和去除行. 我想做的事情的简短版本: 用户编辑特定的单元格时,我需要实际删除对象层次结构中的基础项目,并用其他内容替换.我在模型的SETDATA方法中实现了这一点.由于我不完全理解自己在做什么,所以我似乎已经设置了它,以使其segfaults. 基本上,我只需要更好地了解数据模型如何与QmodelIndex进行交互,但是阅读和重新阅读文档似乎并没有启发我.任何帮助(或指向体面教程的任何链接 - 最好,尽管不一定是在Python中 - 也将不胜感激). 这是我正在使用的代码的示例: #--------------------------------------------------------------------------- def setData(self, i
12 2022-11-27
编程技术问答社区
带有QStandardItemModel的QTableView。如何在编辑单元格时执行实时更新?
最近,我切换到QT.这已经花了一些时间,但是我开始找到自己的出路.但是,仍然存在一个问题: 我想移植一个程序,该程序在编辑表视图中编辑单元格(QTableView with QstandardItemModel)时会响应每个键按下.这个想法是在用户输入表视图单元格中的文本时显示和更新单独表单上的可能性列表.每次键冲程之后,需要根据某些单元格的编辑字段中的当前文本进行更新列表. 使用qtableView :: installeventfilter和qevent ::键盘,我可以在焦点焦点时获取所有键按下,但是仅在编辑后进行单元文本/模型,该单元文本/模型禁止列表的实时更新. 仅在编辑完成后而不在用户输入期间发出模型的数据调节信号. . 关于如何解决这个问题的想法? 我应该使用Qitemdelegate吗? 或者应该以某种方式连接QlineEdit,并且可以在视觉上看到它,因此可以执行此操作,因此用户似乎仍然直接在单元格内工作? 谢谢您的任何帮助 解决方案
8 2022-09-12
编程技术问答社区
专业化QAbstractProxyModel以增加一列:表格单元格变成空的。
我创建了一个类似 mixin 的代理模型 (Qt5),它只是向另一个代理模型添加了额外的第一列,用于向表视图的每一行添加 QToolBar 操作(例如,“删除"按钮).该模型只是提供了一种为第一列填充 QList 的方法.代理必须知道每个 QVariant 的含义(通常是 ints/enum 的标识动作),并相应地填充 QToolBar.作为最后一个功能,如果没有操作,则不会添加额外的列(在这种情况下,它的行为类似于 QIdentityProxyModel).添加后,操作将无法删除.这是另一天的功能. 今天的问题是,当我插入动作(我在将模型设置为视图之前这样做)时,单元格都是空白的.所以,我对信号做错了什么,或者谁知道是什么(我认为错误在 add_action 函数中,在代码段的末尾): template class action_model : public proxy_model { QList
288 2022-08-11
编程技术问答社区
QAbstractItemModel: QTreeView中恼人的分支线
我已经创建了 QAbstractItemModel 的简约子类.它可以工作,但在 QTreeView 中有一条不应该出现在这里的奇怪分支线(因为 [Sensor arrays] 部分之后没有更多项目).你不能告诉我,我做错了什么以及如何解决它? 这是我的代码: import os, sys from PyQt5 import QtCore, QtGui, QtWidgets import treelib class BlockHierarchyNode(object): def __init__(self, icon_path=None, name="", description="", is_category=False): if icon_path is not None: self._icon = QtGui.QPixmap(icon_path) if self._icon.size() ==
174 2022-08-11
编程技术问答社区
QTreeView和QAbstractItemModel
我是 Qt 新手,我正在尝试基于平面(或来自 sqlite 表)文件路径列表(不是来自 FS)创建一个简单的树,如下所示: C:\Parent1\Child1\Leaf1.jpg C:\Parent1\Child1\Leaf2.jpg C:\Parent1\Child1\Leaf3.jpg C:\Parent1\Child2\Leaf1.jpg C:\Parent1\Child2\Leaf2.jpg C:\Parent2\Child1\Leaf1.jpg C:\Parent2\Child1\Leaf2.jpg ... D:\.... ... 我想将其显示为树视图(例如文件浏览器). 我查看了 QAbstractItemModel,但在构建树时遇到了一些困难.我的想法是使用 '\' 分割每个路径,并在添加它们之前检查分支是否已经存在.如果分支存在,我必须找到好的父母来添加这个新孩子. 我正在使用 一个简单的树示例但我在实现我的模型时遇到了真正的困难. void MyTr
148 2022-08-11
编程技术问答社区
从一个数据项创建一个QModelIndex
我正在寻找一种从模型中的特定数据创建 QModelIndex 的方法.我可以通过以下方式从 QModelIndex 转到数据项: CustomData *data = static_cast(modelIndex.internalPointer()); 但我正在寻找一个反函数: QModelIndex *index = createIndex(data); // ?? 我已经实现了与简单树模型示例非常相似的数据之间的链接 (http://doc.qt.io/qt-5/qtwidgets-itemviews-simpletreemodel-example.html).我的视图正确显示数据,但有相当大的滞后.我想发出 dataChanged(QModelIndex, QModelIndex) 以立即查看视图的更新,因为我认为延迟是由于等待视图更新. 在链接的示例中,我试图从 TreeItem 获取其在 QTreeModel 中的相应索引.
142 2022-08-11
编程技术问答社区
QTreeView总是显示相同的数据
我有一个项目树.是这样的: Categorias (root) - General --- Computadoras --- Tablets - Insumos --- Cartuchos 问题是 QTreeView 总是使用相同的信息完成.我得到一个看起来像这样的树视图: Categorias (root) - General --- General --- Insumos - Insumos --- General 我在 index() 方法中放置了一个“打印",以查看是否正在创建索引,然后,例如,当我第一次进入“常规"类别时,为"Computadoras"和“平板电脑"被创造出来,但就在那个时候!然后,显示的数据是错误的!有什么想法吗? 我给你我的树视图实现.Qt教程一等于什么? def buildTree(categorias, parentTree, step): for categoria in categorias: #print
394 2022-08-11
编程技术问答社区
删除行时,QModelIndex变得无效
我将 QAbstractItemModel 子类化以在 QTreeView 中显示项目,并且在这个子类 (projectModel) 中,我有一个函数可以删除树视图中当前选定的索引.Component 是用来表示模型所有成员的类: void projectModel::deleteComponent() { QModelIndex child_index = _treeview->selectionModel()->currentIndex(); Component* child = static_cast(child_index.internalPointer()); Component* parent = child->Parent(); QModelIndex parent_index = createIndex(parent->row(), 0, parent); int row = child->row();
430 2022-08-11
编程技术问答社区
如何从PyQt4的QVariant中取回我的Python对象?
我正在创建一个 QAbstractItemModel 的子类以显示在 QTreeView 中. 我的 index() 和 parent() 函数使用 QAbstractItemModel 继承的函数 createIndex 创建 QModelIndex 并为其提供所需的 row、column 和 data.这里,出于测试目的,data 是一个 Python 字符串. class TestModel(QAbstractItemModel): def __init__(self): QAbstractItemModel.__init__(self) def index(self, row, column, parent): if parent.isValid(): return self.createIndex(row, column, "bar") return self.createInde
208 2022-08-11
编程技术问答社区
如何让模型返回的背景色优先于样式?
我有一个 QTreeView 渲染 QAbstractItemModel,我想根据模型中的数据设置某些单元格的背景.我从 model::data(Qt::BackgroundColorRole) 返回 QBrush ,直到我将样式应用于项目为止. 为项目设置任何样式(即使是与背景颜色无关的内容,例如设置边框样式)会覆盖我从模型返回的颜色(对模型进行查询背景颜色的调用).IE.视图的行为就像模型从不返回任何颜色一样. 我使用的是 Qt 4.8,无法升级到更高版本. 有没有办法让模型返回的颜色优先于样式?为什么 Qt 会以如此奇怪的方式表现 - 模型具有更多的粒度,并且比样式可能知道的更多,为什么样式优先 - 毕竟,模型不必为每一个返回颜色单元格 - 只有几个特定的​​单元格? 我认为这是 Qt 中的错误,我已经打开了 错误报告,可在此代码上重现: #include #include
150 2022-08-11
编程技术问答社区