Russian Qt Forum
Ноябрь 22, 2024, 18:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО]помогите пожалуйста разобраться с ошибками(клас наследованый от QPainter  (Прочитано 5560 раз)
Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


работает не трогай


Просмотр профиля WWW
« : Август 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);

}
« Последнее редактирование: Август 22, 2023, 15:55 от Noize_programmer » Записан

Официальная стандартизация языка с++ началась в 1998 году, когда был опубликован стандарт языка ISO/IEC 14882:1998(известный как C++98), разработанный комитетом по стандартизации C++(ISO/IEC JTC1/SC22/WG21 working group)
ssoft
Программист
*****
Offline Offline

Сообщений: 584


Просмотр профиля
« Ответ #1 : Август 22, 2023, 15:47 »

Если закрыть глаза  Шокированный на попытку смешать теплое и зеленое, то должно быть так

Код
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 всегда можно создать на лету с указанием устройства, на котором требуется рисовать.
Записан
Noize_programmer
Чайник
*
Offline Offline

Сообщений: 91


работает не трогай


Просмотр профиля WWW
« Ответ #2 : Август 22, 2023, 15:54 »

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

спасибо Улыбающийся
Записан

Официальная стандартизация языка с++ началась в 1998 году, когда был опубликован стандарт языка ISO/IEC 14882:1998(известный как C++98), разработанный комитетом по стандартизации C++(ISO/IEC JTC1/SC22/WG21 working group)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 22.