Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qtreewidget--撤消选择更改_Qt - Fatal编程技术网

Qtreewidget--撤消选择更改

Qtreewidget--撤消选择更改,qt,Qt,在wx小部件中,我们可以通过调用否决()撤消任何事件 在这里,我正在做我在QT中的第一个GUI。我已经创建了一个new节点测试用例3 现在我希望树上的选择只允许更改,直到我没有保存这个新节点为止。如果我没有保存此节点至少一次,则选择更改应恢复到此未保存的节点测试用例3。为了指示我已保存节点,我正在使用全局变量信号 我怎样才能做到 我试过这样的方法,但没有结果 在selection changed事件处理程序内部当设置新节点创建信号时,如果我更改树边选择,我将尝试将树边选择设置为树边的最后一项:

在wx小部件中,我们可以通过调用
否决()
撤消任何事件

在这里,我正在做我在QT中的第一个GUI。我已经创建了一个
new
节点
测试用例3

现在我希望树上的选择只允许更改,直到我没有保存这个新节点为止。如果我没有保存此节点至少一次,则选择更改应恢复到此未保存的节点
测试用例3
。为了指示我已保存节点,我正在使用全局变量信号

我怎样才能做到

我试过这样的方法,但没有结果

selection changed事件处理程序内部
当设置新节点创建信号时,如果我更改树边选择,我将尝试将树边选择设置为树边的最后一项:

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

这不是用户希望树边和选择的工作方式。我建议你重新考虑你的程序的工作流程

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

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

我真的建议你把“Perv”按钮改成“Prev”