PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Klasse von ui ableiten



undefined
06-06-2004, 23:59
Wie leite ich denn eine Klasse von einer UI Komponente ab?

fs111
07-06-2004, 09:29
Welche Sprache? Du musst schon etwas mehr darüber sagen, was Du wie und wo machen willst, dmait Dir jmd. helfen kann.

fs111

undefined
07-06-2004, 11:06
Ich möchte von einer im QDesigner erstellten ui Komponente in Kdevelope ein Klasse abzweigen mit der ich einige Eigenschaften verändern kann. Weil die ui...cpp ja Automatisch erstellt wird kann ich so nicht darauf zugreifen. Ich weiss nur im Moment nicht wie der Aufbau sein muss.

anda_skoa
07-06-2004, 11:16
Das ist einfach, du erzeugst eine Header Datei und eine Quelldatei



#ifndef MYCLASS_H
#define MYCLASS_H

#include "uigeneratedclass.h"

class MyClass : public UIGeneratedClass
{
Q_OBJECT
public:
MyClass(QWidget* parent=0, const char* name=0);
};
#endif




#include "myclass.h"

MyClass::MyClass(QWidget* parent, const char* name) : UIGeneratedClass(parent, name)
{
}


Ciao,
_

autip
25-01-2006, 01:55
Hallo!

Bei mir funktioniert der Ansatz leider nicht. Und ich weiß einfach nicht warum :mad: Ich hoffe ihr könnt mir helfen. Ich nutze übrigens QT4.1


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 zu meinem Problem:
Mit dem oben geschilderten Ansatz (Single Inheritance Approach) bekomme ich immer Fehlermeldungen.

Hier mal die Auszüge aus den Dateien:

Die kompilierte ui-Datei "Ui_IOPlugin_Widget.h"

#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

#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);
};
#endif



SingleInheritance.cpp

#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!!!


PS: Gibt es den Code-Editor von QT3 in QT 4 eigentlich nicht mehr?