Vielen vielen dank für die tolle erklärung
Ich habe mich mal dran gemacht und ein mini programm geschrieben an dem ich dich mal fragen wollte ob ich alles richtig verstanden habe. Das Programm ist super simpel
es soll einfach ein text eingegeben werden und dieser wird eingelesen und dann in der unteren Zeile ausgegeben. Hier mal der Code:
Gui.h
Code:
#ifndef _GUI_
#define _GUI_
#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QGridLayout>
#include <QWidget>
#include <QLineEdit>
#include <QLabel>
#include <QString>
#include "func.h"
class QtGui: public QWidget, public Func{
Q_OBJECT
public:
QtGui(QWidget *parent = 0);
private slots:
void getInput();
private:
QPushButton *quit;
QPushButton *read;
QGridLayout *layout;
QLineEdit *in;
QLineEdit *out;
QLabel *name_in;
QLabel *name_out;
};
#endif
Gui.cpp
Code:
#include "Gui.h"
QtGui::QtGui(QWidget *parent)
:QWidget(parent), Func()
{
quit = new QPushButton(tr("Quit"));
connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
read = new QPushButton(tr("Read"));
connect(read, SIGNAL(clicked()), this, SLOT(getInput()));
in = new QLineEdit;
out = new QLineEdit;
name_in = new QLabel("IN:");
name_out = new QLabel("OUT:");
layout = new QGridLayout;
layout->addWidget(name_in, 0, 0);
layout->addWidget(in, 0, 1);
layout->addWidget(name_out, 1, 0);
layout->addWidget(out, 1, 1);
layout->addWidget(read, 2, 0);
layout->addWidget(quit, 2, 1);
setLayout(layout);
}
void QtGui::getInput(){
QString te;
const char *huh;
te = in->text();
QByteArray ba = te.toLatin1();
huh = ba.data();
setTex(huh);
out->setText(getText());
}
Func.h
Code:
#ifndef _FUNC_
#define _FUNC_
#include <iostream>
#include <string>
using namespace std;
class Func{
public:
Func();
char *getText();
void setTex(const char *te);
private:
char *text;
};
#endif
Func.cpp
Code:
#include "func.h"
using namespace std;
Func::Func(){
}
char* Func::getText(){
return text;
}
void Func::setTex(const char *te){
int len = strlen(te) + 1;
text = new char[len];
strcpy(text, te);
}
main.cpp
Code:
#include "Gui.h"
#include <iostream>
#include <string>
#include "func.h"
using namespace std;
int main(int argc, char **argv){
QApplication app(argc, argv);
QtGui trennen;
trennen.show();
return app.exec();
}
So wie man unschwer erkennen kann ist es wirklich nix wildes was ich da gemacht habe, mir gehts halt nur ums prinzip und das ich das wirklich verstehe.
Also die Func Klasse stellt bei mir die Kern klasse da diese soll nicht verändert werden. Die Gui ist klar greift auf die funktionen von Func zurück und in der main wird nur ein Object nämlich die gui erstellt und damit hat man dann alle funktionalitäten.
Ist das so von mir richtig aufgefasst worden oder hätte ich anstatt der vererbung lieber eine delegation machen sollen ????
Lesezeichen