0
我試圖創建一個QGraphicsEllipseItem
的子類,所以我可以添加一些功能。但是,即使是非常基本的測試,子類對象也不會顯示在場景中。在以下代碼中,僅顯示(-30,0)
處的藍色圓圈,但不顯示(30,0)
處的紅色圓圈。我究竟做錯了什麼?Qt QGraphicsEllipseItem子類不顯示
在研究這個問題,我看到油漆通常覆蓋了QGraphicsItem
子類,所以我試過了,只要求在myEllipseItem::paint
QGraphicsEllipseItem::paint
,但並沒有區別。
的main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsItem>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QGraphicsScene* scene;
};
class myEllipseItem : public QGraphicsEllipseItem
{
public:
myEllipseItem(float a, float b, float c, float d) {QGraphicsEllipseItem(a,b,c,d);}
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include <QLayout>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
scene = new QGraphicsScene();
QGraphicsEllipseItem* qIcon = new QGraphicsEllipseItem(0.0, 0.0, 20.0, 20.0);
qIcon->setBrush(QBrush(Qt::blue));
scene->addItem(qIcon);
qIcon->setPos(-30,0);
myEllipseItem* myIcon = new myEllipseItem(0.0, 0.0, 20.0, 20.0);
myIcon->setBrush(QBrush(Qt::red));
scene->addItem(myIcon);
myIcon->setPos(30,0);
QGraphicsView* view = new QGraphicsView();
view->setScene(scene);
QGridLayout *layout = new QGridLayout;
layout->addWidget(view);
setLayout(layout);
}
Widget::~Widget()
{
}
哈,這樣做!我沒有意識到需要從初始化列表中調用父構造函數,謝謝! – 2014-10-27 19:14:54
@TSloane不客氣:) – Chernobyl 2014-10-27 19:16:41