问题标签 [qdatawidgetmapper]

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 回答
582 浏览

python-3.x - QDataWidgetMapper; mapping TableWidget to model

I am not finding any documentation showing which widgets QDataWidgetMapper actually works for and have not found any implementation of mapping with a QTableWidget.

It definitely works for QLineEdit's and QComboBoxes, which are input widgets, but is it possible to map to a QTableWidget?

Goal is to use QUndoStack to undo/redo text change in each widget when added to the QUndostack. I want to be able to undo/redo text changes for the items in the QTableWidget as well as the QLineEdits and QComboBoxes.

0 投票
2 回答
210 浏览

python - PySide Widget 显示时未由 QDataWidgetMapper 更新

我正在尝试使用 aQDataWidgetMapper来驱动自定义QComboBox使用Enum.

我在 Windows 10 上,使用 Python 2.7.13、PySide 1.2.4 (Qt 4.8.7),代码如下:

问题是,枚举小部件总是弹出显示它的第一个索引。

属性本身似乎没有问题,因为使用按钮设置它是有效的。

当使用组合框选择不同的索引时,状态也会更新,如窗口关闭时打印的数据所示。

我查看了属性和动态属性,属性上的用户标志,甚至覆盖setPropertyproperty小部件,但无济于事。

我也查看了本指南,但它似乎经常出现问题QComboBox并且QDataWidgetMapper并不真正适用于我的情况。

我看到的唯一解决方案是使用常规工作流程,QComboBox只使用普通的旧索引而不是枚举值,但这太可惜了,我只需要正确触发初始映射,一切都会完美运行。

我真的不知道在哪里看,也许这是一个 PySide 特定的问题,所以任何指针都会有所帮助!

0 投票
1 回答
141 浏览

python - 如何在 QDataWidgetMapper 中将字符串转换为日期格式?

下面是示例代码:

我正在尝试使用 QDataWidgetMapper() 从 Qsqltablemodel 编辑行数据。我的数据库表中的日期列是文本格式,我想使用日期格式作为“d-MMM-yyyy”。当我尝试编辑该行时,日期列将默认日期格式设置为“1-1-2000”。这个怎么做?下面是示例图像: 在此处输入图像描述

0 投票
0 回答
55 浏览

python - 如何使用 QDataWidgetMapper 将字符串编辑为 QListWidget 中的项目

我正在使用 QListWidget、QSqlTableModel、QtableView 和 QDataWidgetMapper。QListWidget 是 ItemIsUserCheckable。我能够将 QListWidget 中的选定项目以字符串格式保存到单个字段中的 QtSql 表中(将列表项转换为字符串为“G​​reen,Green Grapes,Oranges”。但同时我想更改选定的项目并更新来自字符串数据的 QListWidget 的项目。怎么办。是否可能。或者请让我知道是否有其他解决方案。下面是示例代码:

0 投票
1 回答
46 浏览

python - 使用 QDataWidgetMapper 时如何正确提交数据?

我正在使用从QAbstractTableModel子类化的自定义模型,我的数据是 dataclasses 的列表

我用一个QListView和两个QLineEdits设置了一个简单的 GUI ,如下所示:

带有列表视图和两个行编辑的简单 GUI

我试图实现这一点,每当我更改第一个QLineEdit的内容时,列表视图也会更新。
通过阅读QDataWidgetMapper的文档,我知道只要当前小部件失去焦点,就应该更新模型,但事实并非如此。无论我在编辑字段中输入什么,模型的setData方法都不会被调用。 即使我在列表视图中编辑项目,行编辑的内容也不会改变。

我发现当我将文本字段的textChanged信号连接到映射器的submit方法时,一切正常,但是dataChanged方法被调用了 3 次,我不明白为什么。
更奇怪的是,现在每当我在列表视图中编辑项目时,文本字段的内容都会更新,尽管连接到textChanged信号(至少我认为如此)只是一种单向连接。

我究竟做错了什么?我显然遗漏了一些东西,因为如果这是正确的方法, QDataWidgetMapperSubmitPolicy将完全没用。

0 投票
1 回答
77 浏览

python - 使用自定义模型和委托时提醒 QDataWidgetMapper 发生变化

我正在使用带有数据类作为项目的子类QAbstractTableModel 。每个数据类都包含一个带有list的字段“field1” ,我想在 listview 中显示它,并在我在 listview 中编辑或添加项目时自动更改它。

为此,我为QDataWidgetMapper设置了一个自定义委托,它将从该数据类中检索和设置值。这按我想要的方式工作。

我的问题是我想通过按下按钮向该列表视图添加其他项目,并让QDataWidgetMapper将它们自动添加到模型中。

这是我到目前为止所拥有的:

ListView 有三个项目和一个 QPushButton 下面

目前,我正在使用自定义ListView内部的信号itemAdded来手动提交QDataWidgetMapper

有没有办法在CustomListView中做到这一点,而不使用自定义信号?不知何故,委托知道列表视图中的数据何时被编辑。添加新项目时如何触发相同的机制?

0 投票
1 回答
154 浏览

python - 从关系模型填充并连接到 QDataWidgetMapper 的 QComboBox 在 setEditable(True) 时行为异常

我有一个从 QSqlRelationalTableModel 的关系模型填充并连接到 QDataWidgetMapper 的 QComboBox。

我在 QTableView 中选择一行,该行(记录)映射到 QLineEdit 和 QComboBox 小部件,然后我进行一些更改并保存。

如果我选择另一行并保存而不更改 QComboBox 值,则该值会更改并提交给模型。

我使用可编辑组合框不是为了将项目添加到列表中,而是在我有一个大列表而不是下拉组合框视图时使用完成功能

创建数据库:

这是窗口: