gpt4 book ai didi

c++ - Qt QGraphicsEllipseItem 子类不显示

转载 作者:行者123 更新时间:2023-11-28 06:37:14 25 4
gpt4 key购买 nike

我正在尝试创建 QGraphicsEllipseItem 的子类,以便我可以添加一些功能。然而,即使在非常基本的测试中,子类对象也不会显示在场景中。在以下代码中,仅显示 (-30,0) 处的蓝色圆圈,而不显示 (30,0) 处的红色圆圈。我究竟做错了什么?

在研究这个问题时,我发现 QGraphicsItem 子类通常会重写 paint,所以我尝试这样做,只在 myEllipseItem 中调用 QGraphicsEllipseItem::paint::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

小部件.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()
{
}

最佳答案

您的构造函数不正确。你应该使用 next(在我的例子中它是空的,但你可以做所有需要的事情):

标题:

#ifndef MYELLIPSEITEM_H
#define MYELLIPSEITEM_H

#include <QGraphicsEllipseItem>

class myEllipseItem : public QGraphicsEllipseItem
{
public:
myEllipseItem(float a, float b, float c, float d): QGraphicsEllipseItem(a,b,c,d){}
};

#endif // MYCOLORDIALOG_H

如您所见,我使用了单独的头文件。另一个如何使用构造函数体的例子:

myEllipseItem(float a, float b, float c, float d): QGraphicsEllipseItem(a,b,c,d)
{
this->setBrush(QBrush(Qt::green));
}

现在椭圆有“默认”颜色 - 绿色。

关于c++ - Qt QGraphicsEllipseItem 子类不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com