Klasse von ui_KLasse ableiten (Single Inheritance Approach)
Verfasst: 24. Januar 2006 18:48
Hallo!
Ich bin zurzeit dabei, mich in Qt 4 einzuarbeiten.
Als erstes habe ich mit dem Dessigner ein Widget erstellt, als ui-File gespeichert, über das Plugin in Microsoft Visual C++ importiert und mit der "Direct Approach" in mein Programm eingebunden.
Das hat soweit alles Funktioniert.
Nun möchte ich aber zusätzlichen Code aufsetzen.
Wie ich gelesen habe konnte man das in Qt 3 noch in einem Code-Editor machen. Ist das in Qt 4 nicht mehr möglich? Ich hab die Funktion zumindest nicht gefunden.
Egal, die Klassenableitung "Single Inheritance Approach" ist mir eh lieber.
Nun zu meinem Problem:
Mit dem bekannten Ansatz kann ich die Klasse leider nicht Ableiten! Ich erhalte immer Fehlermeldungen. Was mach ich falsch?
Hier mal die Auszüge aus den Dateien:
Die kompilierte ui-Datei "Ui_IOPlugin_Widget.h"
Um die Klasse Abzuleiten habe ich laut diverser Quellen eine .h und .cpp-Datei erstellt:
SingleInheritance.h
SingleInheritance.cpp
Beim kompilieren bekomme ich den folgenden Fehler:
...\Single_Inheritance.cpp( 78 ) : error C2661: 'Ui_IOWidget::Ui_IOWidget' : no overloaded function takes 2 parameters
Wenn ich die ganzen "name"s aus den Klammern entfern lautet der Fehler
...\single_inheritance.cpp( 78 ) : error C2664: '__thiscall Ui_IOWidget::Ui_IOWidget(const class Ui_IOWidget &)' : cannot convert parameter 1 from 'class QWidget *' to 'const class Ui_IOWidget &'
Reason: cannot convert from 'class QWidget *' to 'const class Ui_IOWidget'
No constructor could take the source type, or constructor overload resolution was ambiguous
Error executing cl.exe.
Ausserdem hab ich mal statt
"class MyClass : public Ui_IOWidget"
die Zeile
class MyClass : public IOWidget
oder auch
class MyClass : public QWidget
eingefügt, weil ich mir nicht sicher bin was dort hin gehört, aber alles ohne Erfolg.
Was muss ich ändern?
Danke schon mal für eure Hilfe!!!
Ich bin zurzeit dabei, mich in Qt 4 einzuarbeiten.
Als erstes habe ich mit dem Dessigner ein Widget erstellt, als ui-File gespeichert, über das Plugin in Microsoft Visual C++ importiert und mit der "Direct Approach" in mein Programm eingebunden.
Das hat soweit alles Funktioniert.
Nun möchte ich aber zusätzlichen Code aufsetzen.
Wie ich gelesen habe konnte man das in Qt 3 noch in einem Code-Editor machen. Ist das in Qt 4 nicht mehr möglich? Ich hab die Funktion zumindest nicht gefunden.
Egal, die Klassenableitung "Single Inheritance Approach" ist mir eh lieber.
Nun zu meinem Problem:
Mit dem bekannten Ansatz kann ich die Klasse leider nicht Ableiten! Ich erhalte immer Fehlermeldungen. Was mach ich falsch?
Hier mal die Auszüge aus den Dateien:
Die kompilierte ui-Datei "Ui_IOPlugin_Widget.h"
Code: Alles auswählen
#ifndef UI_IOPLUGIN_WIDGET_H
#define UI_IOPLUGIN_WIDGET_H
#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QGridLayout>
#include <QtGui/QLCDNumber>
#include <QtGui/QLabel>
#include <QtGui/QSpacerItem>
#include <QtGui/QSpinBox>
#include <QtGui/QTextBrowser>
#include <QtGui/QVBoxLayout>
#include <QtGui/QWidget>
class Ui_IOWidget
{
…
//DAS HAB ICH MAL GEKÜRZT
…
};
namespace Ui {
class IOWidget: public Ui_IOWidget {};
} // namespace Ui
#endif // UI_IOPLUGIN_WIDGET_H
Um die Klasse Abzuleiten habe ich laut diverser Quellen eine .h und .cpp-Datei erstellt:
SingleInheritance.h
Code: Alles auswählen
#ifndef SINGLE_INHERITANCE_H
#define SINGLE_INHERITANCE_H
#include "../generated/ui_IOPlugin_Widget.h"
class MyClass : public Ui_IOWidget
{
Q_OBJECT
public:
MyClass(QWidget* parent=0, const char* name=0);
};
#endifSingleInheritance.cpp
Code: Alles auswählen
#include "Single_Inheritance.h"
#include <QApplication>
#include <QDialog>
MyClass::MyClass(QWidget* parent, const char* name) : Ui_IOWidget(parent, name)
{
}Beim kompilieren bekomme ich den folgenden Fehler:
...\Single_Inheritance.cpp( 78 ) : error C2661: 'Ui_IOWidget::Ui_IOWidget' : no overloaded function takes 2 parameters
Wenn ich die ganzen "name"s aus den Klammern entfern lautet der Fehler
...\single_inheritance.cpp( 78 ) : error C2664: '__thiscall Ui_IOWidget::Ui_IOWidget(const class Ui_IOWidget &)' : cannot convert parameter 1 from 'class QWidget *' to 'const class Ui_IOWidget &'
Reason: cannot convert from 'class QWidget *' to 'const class Ui_IOWidget'
No constructor could take the source type, or constructor overload resolution was ambiguous
Error executing cl.exe.
Ausserdem hab ich mal statt
"class MyClass : public Ui_IOWidget"
die Zeile
class MyClass : public IOWidget
oder auch
class MyClass : public QWidget
eingefügt, weil ich mir nicht sicher bin was dort hin gehört, aber alles ohne Erfolg.
Was muss ich ändern?
Danke schon mal für eure Hilfe!!!