虽然可以使用计时器和Qt的信号槽机制自动从场景中删除QGraphicsTextItem,如
QTimer::singleShot(1000, QGraphicsTextItem*, SLOT(deleteLater()));
其他图形对象(QGraphicsItem,QGraphicsEllipseItem)似乎不会继承QObject,因此在编译时会导致错误:
错误:C2664:'QTimer :: singleShot':Konvertierung des Parameters 2 von 'QObject *'中的'QGraphicsEllipseItem *'nicht m“glich
(参数2的转换/转换......不可能)
由于我希望文本和一些图形在一段时间内一起显示,我的问题是: 如何实现自动,定时删除上述“其他”对象?
答案 0 :(得分:1)
QGraphicsItem
s不会正常继承QObject
。你需要像这样继承QGraphicsEllipseItem
:
class AutoHidingItem : public QObject, public QGraphicsEllipseItem
{
Q_OBJECT
// ...
}
或者您只需让您的场景跟踪要隐藏的项目,然后在需要时隐藏它。 (在子类化的场景或隐藏或删除项目的视图中创建一个插槽。)
编辑:@thuga指出QGraphicsEllipseItem
不会继承QObject
,而QGraphicsTextItem
已经存在。编辑回答显示这一点。
希望有所帮助。