qt QGraphicsScene判断指定的Item是否已经在场景中,如果在场景中则删除该Item并利用新的坐标创建一个新的
时间: 2023-05-23 22:01:11 浏览: 493
QGraphicsScene类提供了一个items()函数,用于返回当前场景中所有的item。我们可以使用该函数来判断指定的Item是否在场景中,代码如下:
QList<QGraphicsItem*> itemList = scene->items();
if (itemList.contains(item)) {
scene->removeItem(item);
// 使用新的坐标创建一个新的item
}
这段代码首先获取当前场景中所有的item,然后利用contains()函数判断指定的item是否在列表中。如果在,则使用removeItem()函数将其从场景中删除,然后使用新的坐标创建一个新的item。
相关问题
qt QGraphicsScene判断指定的Item是否已经在场景中
可以通过调用QGraphicsScene的items()函数来获取当前场景中的所有Item组成的列表,如果指定的Item已经在列表中,则说明它已经在场景中了。具体可以参考以下代码:
```
QGraphicsItem* pItem = ...; // 指定的Item
QGraphicsScene* pScene = ...; // 场景
bool bExist = false;
foreach (QGraphicsItem* pItemInScene, pScene->items()) {
if (pItemInScene == pItem) {
bExist = true;
break;
}
}
if (bExist) {
qDebug() << "指定的Item已经在场景中";
} else {
qDebug() << "指定的Item不在场景中";
}
```
Qt C++ QGraphicsScene、QGraphicsItem与QGraphicsView如何在一个QWidget类中绘制标尺如何实现
在一个QWidget类中绘制标尺,可以使用Qt的QGraphicsScene、QGraphicsItem和QGraphicsView来实现。下面是一个简单的示例代码[^1][^2]:
1. 创建一个自定义的QGraphicsView类,例如MyView,继承自QGraphicsView,并重写keyPressEvent函数,用于处理键盘事件。
```cpp
#include <QGraphicsView>
class MyView : public QGraphicsView {
Q_OBJECT
public:
explicit MyView(QWidget *parent = 0);
protected:
void keyPressEvent(QKeyEvent *event);
};
```
2. 在MyView的构造函数中,创建一个QGraphicsScene对象,并将其设置为MyView的场景。
```cpp
MyView::MyView(QWidget *parent) : QGraphicsView(parent) {
QGraphicsScene *scene = new QGraphicsScene(this);
setScene(scene);
}
```
3. 在keyPressEvent函数中,处理键盘事件,例如按下某个键时,在场景中添加一个标尺的QGraphicsItem。
```cpp
void MyView::keyPressEvent(QKeyEvent *event) {
if (event->key() == Qt::Key_R) {
QGraphicsScene *scene = this->scene();
QGraphicsItem *ruler = new QGraphicsRectItem(0, 0, 100, 10);
scene->addItem(ruler);
}
}
```
通过以上代码,当按下R键时,会在场景中添加一个宽度为100,高度为10的矩形标尺。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)