gpt4 book ai didi

c++ - 在 Qt 中撤消 QTableWidget 的单个单元格?

转载 作者:行者123 更新时间:2023-11-28 07:31:32 29 4
gpt4 key购买 nike

我的主窗口类中有一个 QTableWidget。我找不到可以撤消指定单元格文本更改的功能。我想做的是:

    void myCellUndoFunc(int row, int col)
{
table->item(row, col)->undo(); //table is my QTableWidget
}

问题是没有这样的undo()。所以我的问题是,是否可以使用 SIGNAL 和 SLOT 的一些 foo-doo 组合来解决这个问题?

谢谢!

PS:请不要建议使用模型/ View 框架,因为我在我的应用程序中广泛使用了 QTableWidget。对不起。

最佳答案

也许你应该使用

void QTableWidgetItem::setData ( int role, const QVariant & value ) [virtual]

使用 Qt::UserRole 您可以指定最后一个值。在您的方法中,您可以使用数据()-方法访问先前设置的值。您唯一需要做的就是始终使旧值保持最新。

在设置 QTableWidgetItem 的新值之前

tw->setData(Qt::UserRole, tw->text())

在撤销时你可以用

检索数据

tw->setText(tw->data(Qt::UserRole).toString())

其中“tw”是使用上下文菜单事件、点击事件或任何你想要的当前 QTableWidgetItem。您还可以子类化 QTableWidgetItem 并在您的类内部处理整个事情,创建一个 undo() 方法,存储旧值等。

关于c++ - 在 Qt 中撤消 QTableWidget 的单个单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17596592/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com