代码之家  ›  专栏  ›  技术社区  ›  Maxim Popravko

如何以编程方式从QTableWidget提交数据,QTableWidget包含一些处于编辑状态的项?

qt
  •  4
  • Maxim Popravko  · 技术社区  · 16 年前

    当我启动一些命令时,如何从处于编辑状态的QTableWidget自动提交数据?

    假设其中有一些网格和数据(触发QComboBox编辑器的可编辑委托)。因此,一个人开始在组合框中选择选项,但没有完成编辑,然后点击某个按钮,执行操作,使用该组合框中的数据,但新选项尚未提交:\

    如何以编程方式完成表中的编辑?

    我的意思是一些不严格的'循环所有项目和完成编辑'的方式,我认为是坏的和丑陋的。

    哎呀:工作太多了,所以,我还没意识到,一次只能有一个待处理的编辑器。问题还在这里。

    3 回复  |  直到 16 年前
        1
  •  4
  •   KaiSD    16 年前

    tableWidget中有一个名为“commitData”的受保护插槽。您可以从tableWidget继承,然后添加您自己的公共方法(或槽)并从那里发送信号(或简单地调用commitData方法)。 如果您使用的是自己的createEditor方法,那么可以将指向编辑器的指针保存在方法可以获取它的地方。这是一个黑客,但这是我唯一知道的方法。

        2
  •  4
  •   Frank    14 年前

    当前编辑器似乎无法从视图外部访问,但当当前模型索引更改时,它的内容将被提交。因此,强制提交的一个简单方法似乎是调用

        3
  •  0
  •   Simon Meaden    11 年前

    这是一个很老的问题,但它仍然出现在谷歌相当高,所以为了以防万一别人需要答案QTableView有一个受保护的方法

    void currentChanged(const QModelIndex &current, const QModelIndex &previous)
    

    这将导致提交数据,并且QTableWidget构建在QTableView上,因此仍然可以工作。我在网上找到了这个信息 Qt Forum