undefinierte referenz auf destruktor?! weiß nicht so ganz...
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
ich habe mich wohl verkehrt ausgedrückt, aber du hast recht.
ich habe mal folgendes beispiel übersetzt weil ich mich gewundert habe dass man hier main.moc includieren muss weil sonst folgendes kommt:
das war die *pro datei:
als ich die datei nach
änderte erzeugte qmake dann die moc_*.cpp wie folgende fhler zeigten:
ich denke aber mal dass dies daran liegt, dass die main.cpp doch keine richtige header ist. da binn ich mir aber nicht so ganz sicher
und wollte fragen ob ich da richtig liege
ich habe mal folgendes beispiel übersetzt weil ich mich gewundert habe dass man hier main.moc includieren muss weil sonst folgendes kommt:
Code: Alles auswählen
/home/daniel/qt/test/main.cpp:16: undefined reference to `vtable for HelloWorldLabel'
/home/daniel/qt/test/main.cpp:16: undefined reference to `vtable for HelloWorldLabel'
/home/daniel/qt/test/main.cpp:16: undefined reference to `vtable for HelloWorldLabel'
/home/daniel/qt/test/main.cpp:16: undefined reference to `vtable for HelloWorldLabel'
Code: Alles auswählen
#include <QtGui/QApplication>
#include <QtGui/QPushButton>
#include <QtGui/QLabel>
#include <QtGui/QMouseEvent>
#include <QtGui/QPalette>
#include <QtGui/QVBoxLayout>
class HelloWorldLabel : public QLabel
{
Q_OBJECT
public:
HelloWorldLabel(const QString &text, QWidget *parent = 0);
protected:
virtual void mousePressEvent(QMouseEvent *event);
};
HelloWorldLabel::HelloWorldLabel(const QString &text, QWidget *parent)
: QLabel(text, parent)
{}
void HelloWorldLabel::mousePressEvent(QMouseEvent *event)
{
event->accept();
QPalette palette = this->palette();
QPoint pos = event->pos();
int r = 255 * pos.x() / width();
int g = 255 * pos.y() / height();
int b = 255;
palette.setColor(QPalette::Foreground, QColor(r, g, b));
setPalette(palette);
update();
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
QVBoxLayout layout(&window);
HelloWorldLabel label("Hello World!", &window);
label.setAlignment(Qt::AlignCenter);
label.setFont(QFont("Arial", 20, QFont::Bold));
layout.addWidget(&label);
QPushButton button("Close", &window);
QObject::connect(&button, SIGNAL(clicked()), &window, SLOT(close()));
layout.addWidget(&button);
window.show();
return app.exec();
}
#include "main.moc"
Code: Alles auswählen
SOURCES = main.cpp
TEMPLATE = app
CONFIG += gui
Code: Alles auswählen
HEADERS = main.cpp
TEMPLATE = app
CONFIG += gui
Code: Alles auswählen
moc_main.cpp:11:2: #error "The header file 'main.cpp' doesn't include <QObject>."
moc_main.cpp:18: Fehler: »uint« bezeichnet keinen Typ
moc_main.cpp:35: Fehler: »QMetaObject« bezeichnet keinen Typ
moc_main.cpp:40: Fehler: expected initializer vor »*«-Zeichen
moc_main.cpp:45: Fehler: »HelloWorldLabel« wurde nicht deklariert
moc_main.cpp: In function `void* qt_metacast(const char*)':
moc_main.cpp:48: Fehler: »strcmp« wurde in diesem Gültigkeitsbereich nicht definiert
moc_main.cpp:49: Fehler: »HelloWorldLabel« wurde nicht deklariert
moc_main.cpp:49: Fehler: expected `>' vor »*«-Zeichen
moc_main.cpp:49: Fehler: expected `(' vor »*«-Zeichen
moc_main.cpp:49: Fehler: expected primary-expression vor »>«-Zeichen
moc_main.cpp:49: Fehler: ungültige Verwendung von »this« in Nicht-Element-Funktion
moc_main.cpp:49: Fehler: expected `)' vor »;«-Zeichen
moc_main.cpp:48: Warnung: Variable »strcmp« wird nicht verwendet
moc_main.cpp:50: Fehler: »QLabel« wurde nicht deklariert
moc_main.cpp: At global scope:
moc_main.cpp:53: Fehler: »HelloWorldLabel« wurde nicht deklariert
moc_main.cpp:53: Fehler: »QMetaObject« wurde nicht deklariert
moc_main.cpp:53: Fehler: »Call« wurde in diesem Gültigkeitsbereich nicht definiert
moc_main.cpp:53: Fehler: expected primary-expression vor "int"
moc_main.cpp:53: Fehler: expected primary-expression vor "void"
moc_main.cpp:54: Fehler: initializer Ausdrucksliste als zusammengesetzten Ausdruck behandelt
moc_main.cpp:54: Fehler: expected `,' or `;' vor »{«-Zeichen
make: *** [moc_main.o] Fehler 1
und wollte fragen ob ich da richtig liege
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: