问题标签 [qabstracttablemodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用角色更改 QAbstractTableModel headerData
我有一个子类
我重写headerData
方法如下:
我有一个方法,QTableView
使用如下设置TableModel* table
我有两个QTableView
对象ViewA
和viewB
. 我需要ViewA
有一个标题role == Qt::DisplayRole
和viewB
一个标题role == TableModel::CurrencyRole
。如何使用角色为每个视图更改 headerData。
谢谢,如果我遗漏了任何细节或我的问题不清楚,请告诉我。
c++ - 更改数据库连接后如何更新 QSqlTableModel
我有派生自QSqlRelationalTableModel
. 我使用 SQLite 数据库。我需要更改数据库文件。我关闭旧的数据库文件,调用 SetDatabaseName("path to new file") 并打开新的数据库文件。现在我只为模型调用 select(),但它返回 false。如果我调用 setTable("table") 并且只有在 select() 之后,一切正常......但是表的名称是相同的......
我没有找到任何可以通知模型数据库连接已更改的方法....您知道通知模型的更好方法吗?
好的。我又回到了这个话题。
更改 db 后,我必须使用相同的表名调用 setTable() 来重新初始化表模型。而且我没有找到更好的方法来重新初始化表格视图,我称之为
这会产生很多不必要的代码调用,但在其他情况下,表视图不知道表模型的变化(例如列数)。
我没有找到更好的方法来重新初始化QSqlTableModel
和QTableView
. 一些想法?
c++ - Qt:如何在模型/视图设置中同步对来自多个线程的数据的访问?
如何同步访问从 Qt 模型/视图设置中的多个线程访问的数据?
我正在QTableView
与Model
班级一起使用。
Model
扩展QAbstractTableModel
并具有一个自定义类的实例,该类Net
包含要QTableView
通过data()
调用显示的实际数据(由 访问Model::data()
)
我的班级监听网络数据并在单独的线程上运行,从该线程更新它的数据(10 个字符串的简单固定大小数组)。
我的类中的数据必须通过不断更新它的线程和 Qt GUI 通过调用data()
on来访问Model
。
我假设我需要使用互斥锁来同步对我的字符串数组的访问,但QAbstractTableModel::data()
它是一种const
方法,所以我不能锁定boost::mutex
它。
什么是同步访问类中的数据的一般模式,该类扩展QAbstractTableModel
并提供数据QTableView
?
qt - QTableView 似乎对 dataChanged 信号没有反应
下面显示的是我的自定义表格模型。我正在尝试将该 tablemodel 与 QTableView 一起使用。如果调用表模型的方法 append 我希望表视图更新其内容。但它没有,我不知道为什么。但是,如果我将相同的表模型与 QListView 一起使用,则一切正常,即当调用表模型的追加时,列表视图会更新其内容。如果是 QTableView,我需要做些什么特别的事情吗?
c++ - c++ qt qabstracttablemodel子类在底层qmap更新时崩溃
我在更新自定义 qabstracttablemodel 时遇到了很大的麻烦。我想要一个表格视图来显示几只股票的价格。我从我控制的本地服务器获取价格。此设置用于测试目的。定价信息在工作线程中接收。
我通过以下方式对 qabstracttablemodel 进行了子类化:
PriceModel.h:
PriceModel.cpp
当我调用 setTickMap( qmap<...> ) 方法时,模型会填充表格视图,并且所有不同的股票都按预期显示。(在我的模型中初始化数据工作正常)
当我想再次调用 setTickMap( qmap<...> ) 方法时,问题就出现了。应用程序崩溃,我不明白为什么也没有收到重要的错误消息 - 即 segvault。
在调试配置 netbeans 崩溃时,会打开一个名为“Disassemlby”的选项卡,其中包含以下内容:
我将地图分配夹在 beginResetModel() 方法中,但这似乎不起作用,因为我只是得到一个崩溃的应用程序。奇怪的是,这在第一次调用 setter 方法时起作用。这让我认为这是一个非常愚蠢的错误。我认为第一次调用工作正常,我们可以排除它与线程间通信问题有关。
这个模型不应该由用户通过 GUI 编辑,我知道我可以使用 tablewidget 来显示数据,但我不确定是否会有另一个视图来共享这个模型信息。当前价格的地图不会很大(最多 25 件商品),所以我不会因为每个新价格都重新设置模型而感到不舒服。
在此先感谢,我希望有人可以帮助我解决这个问题
c++ - QTableView 根据值更改行颜色
我有一个QTableView
我用我自己的模型从QAbstractTableModel
. 当行中的一个字段具有特定值时,我希望能够将行颜色更改为红色。我看到很多例子,答案是调用模型setData
并用于Qt::BackgroundRole
更改背景颜色。由于我继承了AbstractTableModel
我重新实现的子类setData
,data
因此调用模型setData
对背景颜色角色没有任何作用,因为我只处理角色为Qt::DisplayRole
.
我想我的第一个问题是:有没有更简单的方法来改变整个角色的颜色?如果没有,我猜我必须实现该部分setData
并data
处理BackgroundRole
我不知道该怎么做的部分,如果有人有如何做到这一点的例子,那真的会有很大帮助......
java - 我们可以在 JTables 中使用通用的 TableModel 吗?
我现在正在研究 JTables 并有一堆业务对象,我使用 Hibernate + Spring Data JPA从数据库中检索这些对象。
我喜欢 Spring Data JPA 处理 DAL 的所有繁琐实现,并且想知道是否有类似的TableModel
.
基本上,我会有一些类似的东西:
public class GenericTableModel<T> extends AbstractTableModel
并且GenericTableModel
会使用反射和/或注释来查看T
.
这样的事情存在吗?我希望我不必为要在 JTable 上显示的每个对象都有一个 TableModel ..
qt4 - 如何在 Qt4 中将项目添加到模型并获取新添加项目的索引
我有一个窗口,其中包含databaseTreeView
QAbstractTableModel 子类上的 QTreeView ()(通过 QSortFilterProxyModel)。我有一个 [Add] 按钮,它调用ui->databaseTreeView->model()->insertRow(ui->databaseTreeView->model()->rowCount());
. 我还有一个 [Edit] 按钮,用于ui->databaseTreeView->selectionModel()->currentIndex();
将索引传递给编辑器窗口。
我想让 [Add] 按钮自动打开一个带有新创建项目索引的编辑器,但是随着模型的排序,我不能使用插入行的行号。PlusinsertRows()
只返回一个布尔值(对于我的情况,索引会更方便,所以我想知道是否有人可以告诉我如何获取新添加项目的索引)。
我愿意花两三个小时来做,如果没有其他选择就重构,但我认为它应该相当简单。我好奇地看着QAbstractItemModel::rowsInserted
信号,但这只是返回我给的行insertRows()
,并编辑列表中的最后一项,不管它是否是刚刚添加的项目。
可以在https://github.com/megamasha/FlashKard找到完整的源代码,任何人都可以仔细查看。
c++ - 如何过滤 QAbstractTableModel 模型
我创建了一个名为 tableModel 的 QAbstractTableModel 模型和一个名为 listModel 的 QAbstractListModel 模型,并且我已将这些模型设置为各自的视图(QTableView 和 QListView)。我想根据 listModel 过滤 tableModel。这意味着当有人点击一个 listitem 并且 tableview 应该根据列表项进行过滤。这些模型运行良好。请帮助我如何进行过滤。
在 QSqlModel 我们可以使用带有 sql 关系的 setFilter 成员来做到这一点。
qt - 发出 dataChanged(createIndex(1,1),createIndex(1,1)) 导致许多 ::data 调用
我有一个 QTableView 和一个相应的 QAbtractTableModel 子实例。
我惊讶地发现,如果我的表模型实例发出一个命名单个单元格的 dataChanged,那么 Qt 框架将发出大量对我的表模型的 ::data() 成员函数的调用。这些调用的行/列范围似乎涵盖了屏幕上的整个范围+一些额外的内容。
这超出了我的预期。我原以为命名单个单元格的 dataChanged() 只会导致 ::data() 调用请求该单元格的数据。毕竟,这是我的表格模型所说的唯一改变的单元格。但是 Qt 框架似乎非常合群,并且会询问所有单元格。
我显然对 dataChanged() 信号的意图有一个破碎的理解。
有没有办法告诉 QTableView 只更新一个单元格和一个单元格,而无需将所有额外的喋喋不休发送到我的表格模型?
更新:包括代码示例 这里的示例是标题、源代码和用于创建表的代码块。对我来说,表格显示为 12 列和 29 行。在最后的“issueEmit”调用之后,::data 将被调用 1044 次,这都是因为单个单元格的 dataChanged() 信号。