Qtreewidget - 撤消选择更改

时间:2013-07-09 12:11:30

标签: qt

在wx-widget中,我们可以通过调用VETO()撤消任何事件。

这里我正在进行QT中的第一个GUI。我创建了一个new节点test case 3

现在我希望只允许更改树上的选择,直到我没有保存这个新节点。如果我至少未保存此节点一次,则选择更改应还原为此未保存的节点test case 3。为了表明我已经保存了节点,我正在使用全局变量信号。

我怎么能得到它?

我尝试过类似的东西但没有结果。

当设置新节点创建信号时,在selection changed event handler内,如果我更改树形图选项,我试图将树形小工具的选择设置为树形小工具的最后一项:

QPoint prevPoint;
QModelIndex index;
int count = ui->treeWidgetLeft->topLevelItemCount();
//prevPoint.setX(currentXmlRootNodeNumber +1 );
prevPoint.setX(count);
prevPoint.setY(0);
index = ui->treeWidgetLeft->indexAt(prevPoint);
abortEvent = TRUE;
ui->treeWidgetLeft->selectionModel()->select(index ,QItemSelectionModel::Select);

并在选择更改事件处理程序时检查:

if (abortEvent) {
    abortEvent = false;
    return;
}

enter image description here

1 个答案:

答案 0 :(得分:2)

这不是用户期望treewidget和选择的工作方式。我建议您重新考虑您的计划的工作流程。

当用户从树状小部件中选择另一个测试用例时,如果让用户更改测试用例而不保存,该怎么办?显示消息框并询问用户是否要保存。然后保存/丢弃并将测试用例更改为用户单击的测试用例。

或完全删除“保存”按钮。始终保存用户输入测试用例的数据。如果您愿意,可以添加撤消按钮。它会将测试用例恢复到用户选择它时的状态。这很容易实现,只需在编辑开始时创建测试用例的副本,如果用户选择撤消操作,则还原为。

确实建议您将“Perv”按钮更改为“Prev”。