0

在 wx-widget 中,我们可以通过调用VETO().

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

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

我怎样才能实现它?

我尝试了这样的事情,但没有结果。

selection changed event handler设置新节点创建信号时,如果我更改treewidget选择,我试图将treewidget的选择设置为treewidget的最后一项:

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;
}

在此处输入图像描述

4

1 回答 1

2

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

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

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

真的建议您将“Perv”按钮更改为“Prev”。

于 2013-07-09T14:39:24.670 回答