Я кодирую проект. Я начал получать ошибки после того, как попытался сделать статическую сборку. Я сделал некоторые изменения, которые я не могу вспомнить. Но я уверен, что если эту заглушку можно очистить, то основной проект также может быть очищен.
Это заголовочный файл.
#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
Вот исходный файл
#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"
А это основной файл
#include <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();
}
Я создал файл moc, используя командную строку qt и команду
moc myLabel.h -o myLabel.moc
После этого я попытался скомпилировать проект через Qt-Editor. Но я получил многократную ошибку определения следующим образом:
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: здесь сначала определено
debug / moc_myLabel.o: C: \ Documents and Settings \ prabhakaran \ Desktop \ CalendarNew-build-desktop / debug / moc_myLabel.cpp: 62: множественное определение `MyLabel :: qt_metacast (char const *) '
debug / myLabel.o: C: \ Documents and Settings \ prabhakaran \ Desktop \ CalendarNew-build-desktop /../ CalendarNew // myLabel.moc: 62: сначала определено здесь
debug / moc_myLabel.o: C: \ Documents and Settings \ prabhakaran \ Desktop \ CalendarNew-build-desktop / debug / moc_myLabel.cpp: 70: множественное определение `MyLabel :: qt_metacall (QMetaObject :: Call, int, недействительный **) '
debug / myLabel.o: C: \ Documents and Settings \ prabhakaran \ Desktop \ CalendarNew-build-desktop /../ CalendarNew // myLabel.moc: 70: сначала определено здесь
debug / moc_myLabel.o: C: \ Documents and Settings \ prabhakaran \ Desktop \ CalendarNew-build-desktop / debug / moc_myLabel.cpp: 87: множественное определение `MyLabel :: file_Selected (QString) '
debug / myLabel.o: C: \ Documents and Settings \ prabhakaran \ Desktop \ CalendarNew-build-desktop /../ CalendarNew // myLabel.moc: 87: сначала определено здесь
debug / moc_myLabel.o: moc_myLabel.cpp :(. Data + 0x0): множественное определение `MyLabel :: staticMetaObject '
debug / myLabel.o: myLabel.cpp :(. Data + 0x0): сначала определено здесь
collect2: ld вернул 1 статус выхода
mingw32-make [1]: * [debug \ CalendarNew.exe] Ошибка 1
mingw32-make: * [отладка] Ошибка 2
Процесс «D: /TempInstallationFolder/Qt/Dynamic/mingw/bin/mingw32-make.exe» завершен с кодом% 2.
Ошибка при создании проекта CalendarNew (цель: рабочий стол)
При выполнении шага сборки 'Make'
Кто-нибудь, пожалуйста, помогите мне решить эту проблему.