使用QDataWidgetMapper接受已编辑的wigets

时间:2011-10-04 17:07:46

标签: qt

我正在创建一个代表待办事项列表的小应用程序。 该列表存储在cusom模型中(从QAbstractItemModel派生)并显示在QTableView中。

我还有一个自定义窗口小部件(TaskDialog),用于从列表中浏览和编辑任务。 TaskDialog的子节点使用QDataWidgetMMapper映射到模型。 在任务对话框中,我还有一些按钮,可以浏览我的待办事项列表中的所有任务(QDataWidgetMapper :: toPrevious()...)。

问题在于,如果我在TaskDialog中编辑任务(例如任务名称),然后浏览到另一个任务,则不会在模型中设置新编辑的enty。 但是,如果我在TaskDialog中编辑某些内容,则首先将焦点更改为TaskDialog的其他子窗口小部件,然后按下其中一个浏览按钮,而不是将更改写入模型。

如何接受处于编辑模式的小部件并将其写入模型。

我也尝试过诺基亚的QDataWidgetMapper示例。在那里工作得很完美。但他们使用QStandardItemModel。

祝你好运 路加

1 个答案:

答案 0 :(得分:2)

我找到了一个解决方案: QDataWidgetMapper的提交策略必须设置为QDataWidgetMapper :: ManualSubmit。 然后,当我浏览到一个新项目(即按下其中一个浏览按钮)时,我总是用QDataWidgetMapper :: submit()提交更改。