我的Main Window类中有一个QTableWidget。 我无法找到将撤消指定单元格的文本更改的功能。 我想做的是:
void myCellUndoFunc(int row, int col)
{
table->item(row, col)->undo(); //table is my QTableWidget
}
问题是没有这样的undo()。 所以我的问题是,可以使用SIGNAL的&的一些foo-doo组合来解决这个问题。 SLOT的?
谢谢!
PS:请不要建议使用Model / View框架,因为我在我的应用程序中广泛使用了QTableWidget。抱歉也是这样。
答案 0 :(得分:1)
也许你应该使用
void QTableWidgetItem::setData ( int role, const QVariant & value ) [virtual]
使用 Qt :: UserRole ,您可以指定最后一个值。在您的方法中,您可以使用data() - Method访问先前设置的值。您唯一需要做的就是始终保持旧值最新。
在设置QTableWidgetItem的新值之前
tw->setData(Qt::UserRole, tw->text())
并且撤消u可以使用
检索数据 tw->setText(tw->data(Qt::UserRole).toString())
其中“tw”是使用contextmenu-event,clicked-event或你想要的任何内容的当前QTableWidgetItem。你也可以继承QTableWidgetItem并在你的类内部处理这整个事情,创建一个undo()方法,存储旧值等等。