开发者

Qt - moc file related error

开发者 https://www.devze.com 2023-03-03 13:02 出处:网络
I am coding a project. Istarted to getting errors after I tried to make the static build. I made some changes, which I can\'t remember. But, I am sure that if this stub can be cleared, then the main p

I am coding a project. I started to getting errors after I tried to make the static build. I made some changes, which I can't remember. But, I am sure that if this stub can be cleared, then the main project also can be get cleared.

This is header file.

#ifndef MYLABEL_H
#define MYLABEL_H

#include <QFileDialog>
#include <QLabel>
#include <QMouseEvent>
#include <QObject>
#include <QPaintEvent>

class MyLabel:public QWidget
{
private:
    QPixmap default_Pixmap;
    QPixmap pixmap;
    QFileDialog * fileDialog;
    Q_OBJECT
public:
    MyLabel();
    void setPixmap(QPixmap pixmap);
    void setDefault();
protected:
    void mousePressEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent * event);
signals:
    void file_Selected(QString fileName);
private slots:
    void file_Got_Selected(QString fileName);

};

#endif // MYLABEL_H

Here is the source file

#include "MyLabel.h"
#include "MyMessageBox.h"
#include <QFileDialog>
#include <QPainter>

MyLabel::MyLabel():QWidget()
{
    default_Pixmap = QPixmap("select.gif").scaled(250,100);
    this->fileDialog=new QFileDialog(this);
    fileDialog->setNameFilter("Image Files (*.BMP *.GIF *.JPG *.JPEG *.PNG *.PBM *.PGM *.PPM *.XBM *.XPM)");
    connect(fileDialog,SIGNAL(fileSelected(QString)),this,SIGNAL(file_Selected(QString)));
    connect(fileDialog,SIGNAL(fileSelected(QString)),this,SLOT(file_Got_Selected(QString)));
}

void MyLabel::setPixmap(QPixmap pixmap)
{
    this->pixmap = pixmap;
}

void MyLabel::setDefault()
{
    this->pixmap = default_Pixmap;
}

void MyLabel::mousePressEvent(QMouseEvent *event)
{
    fileDialog->show();
    //QString file_Name = file_Dialog.getOpenFileName();
}

void MyLabel::paintEvent(QPaintEvent * event)
{
    QPainter painter(this);
    painter.drawPixmap(0,0,width(),height(),pixmap.scaled(QSize(width(),height())));
}

void MyLabel::file_Got_Selected(QString fileName)
{
    this->pixmap = QPixmap(fileName);
}

#include "myLabel.moc"

And this is the main file

#include 开发者_如何学Python<QLabel>
#include <QPixmap>
#include <QtGui/QApplication>
#include "myLabel.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MyLabel mm;
    //mm.setPixmap(QPixmap("dummy.jpg"));
    //mm.setPixmap(QPixmap());
    mm.setDefault();
    mm.show();

    return a.exec();
}

I created the moc file using qt command prompt and the command

moc myLabel.h -o myLabel.moc

After this I tried to compile the project through Qt-Editor. But I got multi definition error as follows,

debug/moc_myLabel.o:d:/TempInstallationFolder/Qt/Dynamic/qt/include/QtCore/../../src/corelib/global/qglobal.h:1381: multiple definition of `MyLabel::metaObject() const'

debug/myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/../CalendarNew//myLabel.moc:57: first defined here

debug/moc_myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/debug/moc_myLabel.cpp:62: multiple definition of `MyLabel::qt_metacast(char const*)'

debug/myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/../CalendarNew//myLabel.moc:62: first defined here

debug/moc_myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/debug/moc_myLabel.cpp:70: multiple definition of `MyLabel::qt_metacall(QMetaObject::Call, int, void**)'

debug/myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/../CalendarNew//myLabel.moc:70: first defined here

debug/moc_myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/debug/moc_myLabel.cpp:87: multiple definition of `MyLabel::file_Selected(QString)'

debug/myLabel.o:C:\Documents and Settings\prabhakaran\Desktop\CalendarNew-build-desktop/../CalendarNew//myLabel.moc:87: first defined here

debug/moc_myLabel.o:moc_myLabel.cpp:(.data+0x0): multiple definition of `MyLabel::staticMetaObject'

debug/myLabel.o:myLabel.cpp:(.data+0x0): first defined here

collect2: ld returned 1 exit status

mingw32-make[1]: * [debug\CalendarNew.exe] Error 1

mingw32-make: * [debug] Error 2

The process "D:/TempInstallationFolder/Qt/Dynamic/mingw/bin/mingw32-make.exe" exited with code %2. Error while building project CalendarNew (target: Desktop) When executing build step 'Make'

Anybody please hep me out of this problem.


Try to remove line include "MyLabel.moc" form you source file. You don't need to include it into cpp file.

0

精彩评论

暂无评论...
验证码 换一张
取 消