PDA

View Full Version : مشکل با تعریف کلاس



glassysmart
دوشنبه 04 مرداد 1389, 15:40 عصر
سلام به کد زیر توجه کنید

#ifndef IMAGEWIDGET_H
#define IMAGEWIDGET_H
#include <QWidget>

class ImageWidget : public QWidget
{
Q_OBJECT
public:
ImageWidget(QWidget *parent = 0);


};

#endif // IMAGEWIDGET_H

#include "imagewidget.h"
#include <QtGui>
ImageWidget::ImageWidget(QWidget * parent)
:QWidget(parent)
{
}

Running build steps for project test... Configuration unchanged, skipping QMake step.
Starting: C:/Qt/2010.01/mingw/bin/mingw32-make.exe -w
mingw32-make: Entering directory `C:/Users/amin/Documents/test'
C:/Qt/2010.01/mingw/bin/mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/amin/Documents/test'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\2010.01\qt\include\QtCore" -I"..\..\..\..\Qt\2010.01\qt\include\QtGui" -I"..\..\..\..\Qt\2010.01\qt\include" -I"..\..\..\..\Qt\2010.01\qt\include\ActiveQt" -I"debug" -I"..\..\..\..\Qt\2010.01\qt\mkspecs\win32-g++" -o debug\imagewidget.o imagewidget.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o debug\test.exe debug/main.o debug/imagelabe.o debug/imagewidget.o -L"c:\Qt\2010.01\qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
mingw32-make[1]: Leaving directory `C:/Users/amin/Documents/test'
mingw32-make: Leaving directory `C:/Users/amin/Documents/test'
debug/imagewidget.o: In function `ImageWidget':
C:\Users\amin\Documents\test/imagewidget.cpp:4: undefined reference to `vtable for ImageWidget'
C:\Users\amin\Documents\test/imagewidget.cpp:4: undefined reference to `vtable for ImageWidget'
C:\Users\amin\Documents\test/imagewidget.cpp:4: undefined reference to `vtable for ImageWidget'
C:\Users\amin\Documents\test/imagewidget.cpp:4: undefined reference to `vtable for ImageWidget'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\test.exe] Error 1
mingw32-make: *** [debug] Error 2
Exited with code 2.
Error while building project test
When executing build step 'Make'

بزرگ ترین مشکل من با qt این ارث بری از کلاس هاش است و خواشمندم یکی به صورت اصولی این مشکل را برای من حل کند

alaaaa
دوشنبه 04 مرداد 1389, 19:56 عصر
اون طور که از خطا پیداست مشکل تو با تابع یا متغیری به نام vtable ، که تو هم اون رو سانسور کردی و تو کدات چیزی به این اسم نیست.

glassysmart
دوشنبه 04 مرداد 1389, 21:35 عصر
این مشکل وقتی Q_OBJECT را حذف می کنم برطرف می شود که در این صورت امکان تعریف slot جدید از بین می رود

حامد مصافی
سه شنبه 05 مرداد 1389, 01:09 صبح
ببینید فایل moc_imagewidget.cpp ایجاد شده است؟
پروژه را به طور کامل clean کرده و مجدداً امتحان کنید.

.:saeed:.
پنج شنبه 07 مرداد 1389, 01:35 صبح
سلام
اگه امکان داره کل پروژه رو بذارید تا بررسی کنیم . اما اگه MakeFile رو پاک کنید و مطمئن باشید توی فایلی با پسوند .pro تمام سورس ها و هدر ها لیست شدند و دوباره پروژه رو کامپایل کنید احتمالا مشکل حل می شه. اگه هم فایل .pro درست نیست یا اصلا نیستش ، دستور زیر درQt Command prompt اونو می سازه

qmake -project