Seite 1 von 1

Compiler Fehler in moc.. Hilfe!

Verfasst: 9. Januar 2007 09:10
von Limexx
Hi Leute, dass hier ist der Fehler, und ich kann damit garnichts anfangen:

Code: Alles auswählen

debug\moc_qt_funks.cpp:44: error: `staticMetaObject' is not a member of `Ui_mw_l
ogin'
debug\moc_qt_funks.cpp: In member function `virtual void* x_Login::qt_metacast(c
onst char*)':
debug\moc_qt_funks.cpp:58: error: `qt_metacast' is not a member of `Ui_mw_login'

debug\moc_qt_funks.cpp: In member function `virtual int x_Login::qt_metacall(QMe
taObject::Call, int, void**)':
debug\moc_qt_funks.cpp:63: error: `qt_metacall' is not a member of `Ui_mw_login'

debug\moc_qt_funks.cpp: In member function `void x_Login::loginPassed()':
debug\moc_qt_funks.cpp:80: error: no matching function for call to `QMetaObject:
:activate(x_Login* const, const QMetaObject*, int, int)'
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:264: note
: candidates are: static void QMetaObject::activate(QObject*, int, void**)
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:265: note
:                 static void QMetaObject::activate(QObject*, int, int, void**)
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:266: note
:                 static void QMetaObject::activate(QObject*, const QMetaObject*
, int, void**)
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:267: note
:                 static void QMetaObject::activate(QObject*, const QMetaObject*
, int, int, void**)
debug\moc_qt_funks.cpp: In member function `void x_Login::loginFailed()':
debug\moc_qt_funks.cpp:86: error: no matching function for call to `QMetaObject:
:activate(x_Login* const, const QMetaObject*, int, int)'
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:264: note
: candidates are: static void QMetaObject::activate(QObject*, int, void**)
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:265: note
:                 static void QMetaObject::activate(QObject*, int, int, void**)
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:266: note
:                 static void QMetaObject::activate(QObject*, const QMetaObject*
, int, void**)
C:/Programme/QT4/include/QtCore/../../src/corelib/kernel/qobjectdefs.h:267: note
:                 static void QMetaObject::activate(QObject*, const QMetaObject*
, int, int, void**)
hier die Header und C++ datei. Die "ui_login.h" ist eine vom Designer erzeugte Datei.

Code: Alles auswählen

#ifndef qt_funks_h
#define qt_funks_h

#include "ui_login.h"
//#include "ui_student.h"
#include <QString>

class x_Login : public Ui_mw_login
{
Q_OBJECT

public slots:
	void check();
signals:
	void loginPassed();
	void loginFailed();
};


#endif

Code: Alles auswählen

#include "qt_funks.h"

void x_Login::check()
{
		QString User = "Limexx";
		QString Pass = "xxxx";
		if(le_userid->displayText() == User && le_password->displayText() == Pass)
		{
			emit loginPassed();
		}
		else
		{
			emit loginFailed();
		}
}

Verfasst: 9. Januar 2007 11:04
von Christian81
Was ist Ui_mw_login ?

Verfasst: 9. Januar 2007 12:47
von Limexx

Code: Alles auswählen

/********************************************************************************
** Form generated from reading ui file 'login.ui'
**
** Created: Mon 8. Jan 22:54:10 2007
**      by: Qt User Interface Compiler version 4.2.0
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef UI_LOGIN_H
#define UI_LOGIN_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QLabel>
#include <QtGui/QLineEdit>
#include <QtGui/QMainWindow>
#include <QtGui/QPushButton>
#include <QtGui/QStatusBar>
#include <QtGui/QWidget>

class Ui_mw_login
{
public:
    QWidget *centralwidget;
    QLabel *l_name;
    QLabel *l_pw;
    QLineEdit *le_password;
    QPushButton *pb_quit;
    QPushButton *pb_login;
    QLineEdit *le_userid;
    QStatusBar *statusbar;

    void setupUi(QMainWindow *mw_login)
    {
    mw_login->setObjectName(QString::fromUtf8("mw_login"));
    mw_login->setWindowModality(Qt::NonModal);
    mw_login->setMinimumSize(QSize(220, 115));
    mw_login->setMaximumSize(QSize(220, 115));
    mw_login->setBaseSize(QSize(200, 100));
    mw_login->setContextMenuPolicy(Qt::NoContextMenu);
    mw_login->setToolButtonStyle(Qt::ToolButtonTextOnly);
    centralwidget = new QWidget(mw_login);
    centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
    l_name = new QLabel(centralwidget);
    l_name->setObjectName(QString::fromUtf8("l_name"));
    l_name->setGeometry(QRect(10, 10, 71, 21));
    QFont font;
    font.setFamily(QString::fromUtf8("Verdana"));
    font.setPointSize(10);
    font.setBold(true);
    font.setWeight(75);
    l_name->setFont(font);
    l_pw = new QLabel(centralwidget);
    l_pw->setObjectName(QString::fromUtf8("l_pw"));
    l_pw->setGeometry(QRect(10, 40, 75, 17));
    QFont font1;
    font1.setFamily(QString::fromUtf8("Verdana"));
    font1.setPointSize(10);
    font1.setBold(true);
    font1.setWeight(75);
    l_pw->setFont(font1);
    le_password = new QLineEdit(centralwidget);
    le_password->setObjectName(QString::fromUtf8("le_password"));
    le_password->setGeometry(QRect(100, 40, 113, 20));
    le_password->setEchoMode(QLineEdit::Password);
    pb_quit = new QPushButton(centralwidget);
    pb_quit->setObjectName(QString::fromUtf8("pb_quit"));
    pb_quit->setGeometry(QRect(60, 70, 75, 23));
    pb_login = new QPushButton(centralwidget);
    pb_login->setObjectName(QString::fromUtf8("pb_login"));
    pb_login->setGeometry(QRect(140, 70, 75, 23));
    le_userid = new QLineEdit(centralwidget);
    le_userid->setObjectName(QString::fromUtf8("le_userid"));
    le_userid->setGeometry(QRect(100, 10, 113, 20));
    mw_login->setCentralWidget(centralwidget);
    statusbar = new QStatusBar(mw_login);
    statusbar->setObjectName(QString::fromUtf8("statusbar"));
    mw_login->setStatusBar(statusbar);

    retranslateUi(mw_login);

    QSize size(220, 115);
    size = size.expandedTo(mw_login->minimumSizeHint());
    mw_login->resize(size);

    QObject::connect(pb_quit, SIGNAL(clicked()), mw_login, SLOT(close()));
    QObject::connect(le_userid, SIGNAL(returnPressed()), le_password, SLOT(setFocus()));
    QObject::connect(le_password, SIGNAL(returnPressed()), pb_login, SLOT(click()));

    QMetaObject::connectSlotsByName(mw_login);
    } // setupUi

    void retranslateUi(QMainWindow *mw_login)
    {
    mw_login->setWindowTitle(QApplication::translate("mw_login", "Login", 0, QApplication::UnicodeUTF8));
    l_name->setText(QApplication::translate("mw_login", "User ID:", 0, QApplication::UnicodeUTF8));
    l_pw->setText(QApplication::translate("mw_login", "Password:", 0, QApplication::UnicodeUTF8));
    pb_quit->setText(QApplication::translate("mw_login", "Abbrechen", 0, QApplication::UnicodeUTF8));
    pb_login->setText(QApplication::translate("mw_login", "Login", 0, QApplication::UnicodeUTF8));
    Q_UNUSED(mw_login);
    } // retranslateUi

};

namespace Ui {
    class mw_login: public Ui_mw_login {};
} // namespace Ui

#endif // UI_LOGIN_H

Verfasst: 9. Januar 2007 14:31
von Flachkoepper
Moin!

Schau dir nochmal in der Doku folgendes an über "Using a component in your application", Stichwort "multiple inheritance approach".

Viel Grüße,
Flachkoepper

Verfasst: 9. Januar 2007 14:49
von Christian81
Flachkoepper hat geschrieben: Schau dir nochmal in der Doku folgendes an über "Using a component in your application", Stichwort "multiple inheritance approach".
Ich habe gehofft er kommt selbst drauf wenn er die Klassendeklaration sieht... naja hätte ja auch qt3 sein können :)

Verfasst: 9. Januar 2007 20:58
von Limexx
habs nun gelesen, ich brauche die UI aber public... aber aus dem Text wird mir nicht ganz klar, was ich machen soll...

btw ich werkle mit QT erst 3-4 Tage rum, also habe ich noch so gut wie NULL erfahrung :-(

Verfasst: 9. Januar 2007 21:42
von Christian81
Und was spricht dagegen, Ui_mw_login in class x_Login als public zu definieren?

Verfasst: 9. Januar 2007 21:55
von Limexx
das hier

Code: Alles auswählen

debug\moc_qt_funks.cpp:44: error: `staticMetaObject' is not a member of `Ui::mw_
login'
debug\moc_qt_funks.cpp: In member function `virtual void* x_Login::qt_metacast(c
onst char*)':
debug\moc_qt_funks.cpp:61: error: `qt_metacast' is not a member of `x_Login::qt_
metacast(const char*)::QMocSuperClass'
debug\moc_qt_funks.cpp: In member function `virtual int x_Login::qt_metacall(QMe
taObject::Call, int, void**)':
debug\moc_qt_funks.cpp:67: error: `qt_metacall' is not a member of `x_Login::qt_
metacall(QMetaObject::Call, int, void**)::QMocSuperClass'

Verfasst: 9. Januar 2007 22:07
von Flachkoepper
Deine Klassendeklaration muss auch die Vererbung von QMainWindow beinhalten:

Code: Alles auswählen

 class x_Login : public QMainWindow, public Ui_mw_login
{ ... 
Ach ja, und setupUi(this) nicht vergessen.

Viele Grüße,
Flachkoepper

Verfasst: 9. Januar 2007 22:30
von Christian81
Limexx hat geschrieben:das hier
Du solltest Dich echt erstmal mit C++ Grundlagen beschäftigen bzw. nochmal lesen was ich geschrieben habe. Flachkoepper hat natürlich auch Recht.