画像をロードする 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 でアイテムを 1 つずつ元に戻したり削除したりするにはどうすればよいですか?
編集: これを見てください:
case Qt::Key_Delete:
{
itemList = scene->items();
itemList.removeLast();
foreach(QGraphicsItem *item, itemList){
scene->addItem(item);
}
scene->update();
break;
}
それが機能することを期待していましたが、そうではありません。
なぜうまくいかないのか、本当に不思議です。