问题标签 [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.

0 投票
1 回答
3274 浏览

c++ - 使用角色更改 QAbstractTableModel headerData

我有一个子类

我重写headerData方法如下:

我有一个方法,QTableView使用如下设置TableModel* table

我有两个QTableView对象ViewAviewB. 我需要ViewA有一个标题role == Qt::DisplayRoleviewB一个标题role == TableModel::CurrencyRole。如何使用角色为每个视图更改 headerData。

谢谢,如果我遗漏了任何细节或我的问题不清楚,请告诉我。

0 投票
2 回答
2643 浏览

c++ - 更改数据库连接后如何更新 QSqlTableModel

我有派生自QSqlRelationalTableModel. 我使用 SQLite 数据库。我需要更改数据库文件。我关闭旧的数据库文件,调用 SetDatabaseName("path to new file") 并打开新的数据库文件。现在我只为模型调用 select(),但它返回 false。如果我调用 setTable("table") 并且只有在 select() 之后,一切正常......但是表的名称是相同的......

我没有找到任何可以通知模型数据库连接已更改的方法....您知道通知模型的更好方法吗?


好的。我又回到了这个话题。

更改 db 后,我必须使用相同的表名调用 setTable() 来重新初始化表模型。而且我没有找到更好的方法来重新初始化表格视图,我称之为

这会产生很多不必要的代码调用,但在其他情况下,表视图不知道表模型的变化(例如列数)。

我没有找到更好的方法来重新初始化QSqlTableModelQTableView. 一些想法?

0 投票
1 回答
1877 浏览

c++ - Qt:如何在模型/视图设置中同步对来自多个线程的数据的访问?

如何同步访问从 Qt 模型/视图设置中的多个线程访问的数据?

我正在QTableViewModel班级一起使用。

Model扩展QAbstractTableModel并具有一个自定义类的实例,该类Net包含要QTableView通过data()调用显示的实际数据(由 访问Model::data()

我的班级监听网络数据并在单独的线程上运行,从该线程更新它的数据(10 个字符串的简单固定大小数组)。

我的类中的数据必须通过不断更新它的线程和 Qt GUI 通过调用data()on来访问Model

我假设我需要使用互斥锁来同步对我的字符串数组的访问,但QAbstractTableModel::data()它是一种const方法,所以我不能锁定boost::mutex它。

什么是同步访问类中的数据的一般模式,该类扩展QAbstractTableModel并提供数据QTableView

0 投票
1 回答
3610 浏览

qt - QTableView 似乎对 dataChanged 信号没有反应

下面显示的是我的自定义表格模型。我正在尝试将该 tablemodel 与 QTableView 一起使用。如果调用表模型的方法 append 我希望表视图更新其内容。但它没有,我不知道为什么。但是,如果我将相同的表模型与 QListView 一起使用,则一切正常,即当调用表模型的追加时,列表视图会更新其内容。如果是 QTableView,我需要做些什么特别的事情吗?

0 投票
2 回答
546 浏览

c++ - c++ qt qabstracttablemodel子类在底层qmap更新时崩溃

我在更新自定义 qabstracttablemodel 时遇到了很大的麻烦。我想要一个表格视图来显示几只股票的价格。我从我控制的本地服务器获取价格。此设置用于测试目的。定价信息在工作线程中接收。

我通过以下方式对 qabstracttablemodel 进行了子类化:

PriceModel.h:

PriceModel.cpp

当我调用 setTickMap( qmap<...> ) 方法时,模型会填充表格视图,并且所有不同的股票都按预期显示。(在我的模型中初始化数据工作正常)

当我想再次调用 setTickMap( qmap<...> ) 方法时,问题就出现了。应用程序崩溃,我不明白为什么也没有收到重要的错误消息 - 即 segvault。

在调试配置 netbeans 崩溃时,会打开一个名为“Disassemlby”的选项卡,其中包含以下内容:

我将地图分配夹在 beginResetModel() 方法中,但这似乎不起作用,因为我只是得到一个崩溃的应用程序。奇怪的是,这在第一次调用 setter 方法时起作用。这让我认为这是一个非常愚蠢的错误。我认为第一次调用工作正常,我们可以排除它与线程间通信问题有关。

这个模型不应该由用户通过 GUI 编辑,我知道我可以使用 tablewidget 来显示数据,但我不确定是否会有另一个视图来共享这个模型信息。当前价格的地图不会很大(最多 25 件商品),所以我不会因为每个新价格都重新设置模型而感到不舒服。

在此先感谢,我希望有人可以帮助我解决这个问题

0 投票
2 回答
7130 浏览

c++ - QTableView 根据值更改行颜色

我有一个QTableView我用我自己的模型从QAbstractTableModel. 当行中的一个字段具有特定值时,我希望能够将行颜色更改为红色。我看到很多例子,答案是调用模型setData并用于Qt::BackgroundRole更改背景颜色。由于我继承了AbstractTableModel我重新实现的子类setDatadata因此调用模型setData对背景颜色角色没有任何作用,因为我只处理角色为Qt::DisplayRole.

我想我的第一个问题是:有没有更简单的方法来改变整个角色的颜色?如果没有,我猜我必须实现该部分setDatadata处理BackgroundRole我不知道该怎么做的部分,如果有人有如何做到这一点的例子,那真的会有很大帮助......

0 投票
3 回答
3296 浏览

java - 我们可以在 JTables 中使用通用的 TableModel 吗?

我现在正在研究 JTables 并有一堆业务对象,我使用 Hibernate + Spring Data JPA从数据库中检索这些对象。

我喜欢 Spring Data JPA 处理 DAL 的所有繁琐实现,并且想知道是否有类似的TableModel.

基本上,我会有一些类似的东西:

public class GenericTableModel<T> extends AbstractTableModel

并且GenericTableModel会使用反射和/或注释来查看T.

这样的事情存在吗?我希望我不必为要在 JTable 上显示的每个对象都有一个 TableModel ..

0 投票
2 回答
255 浏览

qt4 - 如何在 Qt4 中将项目添加到模型并获取新添加项目的索引

我有一个窗口,其中包含databaseTreeViewQAbstractTableModel 子类上的 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找到完整的源代码,任何人都可以仔细查看。

0 投票
1 回答
2029 浏览

c++ - 如何过滤 QAbstractTableModel 模型

我创建了一个名为 tableModel 的 QAbstractTableModel 模型和一个名为 listModel 的 QAbstractListModel 模型,并且我已将这些模型设置为各自的视图(QTableView 和 QListView)。我想根据 listModel 过滤 tableModel。这意味着当有人点击一个 listitem 并且 tableview 应该根据列表项进行过滤。这些模型运行良好。请帮助我如何进行过滤。

在 QSqlModel 我们可以使用带有 sql 关系的 setFilter 成员来做到这一点。

0 投票
1 回答
4872 浏览

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() 信号。