Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: tumanovalex от Апрель 07, 2011, 09:32



Название: Помогите нарисовать линию
Отправлено: tumanovalex от Апрель 07, 2011, 09:32
Попробовал реализовать рисование линии через класс, в QTCreator получаю невнятную ошибку:
Код:
error: No rule to make target `Makefile.Debug'.  Stop
, в Visual Studio более подробную информацию об ошибке:
Код:
F:\myprogramqt\mylearningqt\mywindow.h(16) : warning C4100: e: неиспользованный формальный параметр Компоновка... mainwindow.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall MyWindow::~MyWindow(void)" (??1MyWindow@@UAE@XZ) в функции "public: virtual void * __thiscall MyWindow::`scalar deleting destructor'(unsigned int)" (??_GMyWindow@@UAEPAXI@Z)
debug\MyLearningQT.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
. Подскажите, пожалуйста, в чем моя ошибка? Прикрепляю проект.


Название: Re: Помогите нарисовать линию
Отправлено: blood_shadow от Апрель 07, 2011, 10:14
mainwindow.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall MyWindow::~MyWindow(void)" (??1MyWindow@@UAE@XZ) в функции "public: virtual void * __thiscall MyWindow::`scalar deleting destructor'(unsigned int)" (??_GMyWindow@@UAEPAXI@Z)
debug\MyLearningQT.exe : fatal error LNK1120: 1 неразрешенных внешних элементов. Подскажите, пожалуйста, в чем моя ошибка? Прикрепляю проект.
вот тебе компилятор сказал что проблема в деструкторе
Код:
LNK2019: ссылка на неразрешенный внешний символ "public: virtual __thiscall MyWindow::~MyWindow(void)

ты объявил, но не определил деструктор -
Код
C++ (Qt)
~MyWindow();
, если он пустой надо написать так:
Код
C++ (Qt)
~MyWindow() {}
или вообще его убрать с объявления класса, если он ничего не делает,
а где реализация конструктора MyWindow?
Код
C++ (Qt)
explicit MyWindow(QWidget *parent = 0);
это только
объявление конструктора, который принимает один аргумент, и вообще создай отдельный файл MyWindow.cpp
и перенеси в него определение ф-ции void MyWindow::paintEvent(QPaintEvent *e), ф-ция довольно большая, чтобы
определять ее внутри класса, так не кошерно