【发布时间】:2013-08-27 08:25:49
【问题描述】:
我有一个加载图像的 QGraphicsView 子类。然后,用户可以通过单击和拖动在该图像上绘制一些线条。
void TabView::mousePressEvent(QMouseEvent *event){
if (event->button() == Qt::LeftButton) {
scene->addLine(line);
}
}
我添加了撤消功能,如下所示:
void TabView::mousePressEvent(QMouseEvent *event){
if (event->button() == Qt::LeftButton) {
lineList<<line;
scene->addLine(lineList.last());
}
}
void TabView::keyPressEvent(QKeyEvent * event){
int key = event->key();
switch(key){
case Qt::Key_Delete:
{
lineList.removeLast();
foreach(QLineF line, lineList){
scene->addLine(line);
}
scene->update();
break;
}
}
}
但这不起作用。这个我试过了
case Qt::Key_Delete:
QGraphicsLineItem *item = new QGraphicsLineItem(lineList.last());
scene->removeItem(item);
scene->update();
break;
但这也行不通。
我的问题是:如何撤消或仅删除 QgraphicsScene 中的项目?
编辑: 看看这个:
case Qt::Key_Delete:
{
itemList = scene->items();
itemList.removeLast();
foreach(QGraphicsItem *item, itemList){
scene->addItem(item);
}
scene->update();
break;
}
它希望它可以工作,但事实并非如此。
我真的想知道为什么它不起作用?
【问题讨论】:
标签: qt undo qgraphicsscene