Russian Qt Forum

Qt => Общие вопросы => Тема начата: Noize_programmer от Август 22, 2023, 12:22



Название: [РЕШЕНО]помогите пожалуйста разобраться с ошибками(клас наследованый от QPainter
Отправлено: Noize_programmer от Август 22, 2023, 12:22
весь проект дать не могу но ошибки в этом классе
(не хочу чтобы кто нибудь создал похожую игру)



Ошибки:
  • F:\projects\Qt_project\5.0.2\games\math_strategy\build-math_strategy-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\moc_Square.cpp:87: ошибка: 'qt_metacast' is not a member of 'QPainter'
    debug\moc_Square.cpp: In member function 'virtual void* Square::qt_metacast(const char*)':
    debug\moc_Square.cpp:87:22: error: 'qt_metacast' is not a member of 'QPainter'
         return QPainter::qt_metacast(_clname);
                          ^~~~~~~~~~~
  • F:\projects\Qt_project\5.0.2\games\math_strategy\build-math_strategy-Desktop_Qt_5_12_12_MinGW_64_bit-Debug\debug\moc_Square.cpp:92: ошибка: 'qt_metacall' is not a member of 'QPainter'
    debug\moc_Square.cpp: In member function 'virtual int Square::qt_metacall(QMetaObject::Call, int, void**)':
    debug\moc_Square.cpp:92:21: error: 'qt_metacall' is not a member of 'QPainter'
         _id = QPainter::qt_metacall(_c, _id, _a);
                         ^~~~~~~~~~~
  • :-1: ошибка: [Makefile.Debug:8206: debug/moc_Square.o] Error 1

код:

h.
Код:
#ifndef SQUARE_H
#define SQUARE_H

#include <QPainter>
#include <QObject>
class QPainter;

class Square : public QPainter, QObject
{
    Q_OBJECT
public:
   Square(QObject* parent = nullptr);
   void drawSquare(QPoint point,QPoint point2,QPoint point3,QPoint point4);
};

#endif // SQUARE_H
cpp.
Код:
#include "Square.h"

Square::Square(QObject* parent) : QPainter(), QObject(parent)
{

}

void Square::drawSquare(QPoint point, QPoint point2, QPoint point3, QPoint point4)
{
    drawPolygon(QPolygon()<< point << point2 << point3 << point4);

}


Название: Re: помогите пожалуйста разобраться с ошибками(клас наследованый от QPainter)
Отправлено: ssoft от Август 22, 2023, 15:47
Если закрыть глаза  :o на попытку смешать теплое и зеленое, то должно быть так

Код
C++ (Qt)
class Square
   : public QObject // всегда первый
   , public QPainter
{
   Q_OBJECT
public:
  Square(QObject* parent = nullptr);
  void drawSquare(QPoint point,QPoint point2,QPoint point3,QPoint point4);
};
 

Но  :-\, не нужно смешивать средство рисования QPainter и объект с поведением.
QPainter всегда можно создать на лету с указанием устройства, на котором требуется рисовать.


Название: Re: помогите пожалуйста разобраться с ошибками(клас наследованый от QPainter)
Отправлено: Noize_programmer от Август 22, 2023, 15:54
Если закрыть глаза  :o на попытку смешать теплое и зеленое
Но  :-\, не нужно смешивать средство рисования QPainter и объект с поведением.
QPainter всегда можно создать на лету с указанием устройства, на котором требуется рисовать.

спасибо :)