R
rdg
???
Hi,
ich bin mal wieder dabei mich an qt herranzuwagen, doch ich bekomme es nicht hin.
Ich will ein Stapellayout, in dem ich anstatt eines widgets ein layout ändern kann.
main.cpp
StapelLayout.h
StapelLayout.cpp
Zeiger_normal.h
Zeiger_normal.cpp
ButtonBox.h
ButtonBox.h
Wie der erfahrene Programmierer schnell sieht bin ich damit überfordert.
Zum einen macht die Funktion addStapel sehr zuschaffen zum anderen auch vlay->addWidget(Buttonbox); <-Eltern ist schon QLayout . Insgesammt kann man sagen, habe ich mich ziemlich verlaufen und es hakt am ganzen Code.
Ich habe mich schon genug mit den Grundlagen befasst, doch es fällt mir sehr schwer diese auch in der Praxis anzuwenden, ich habe halt keine praktische Erfahrung, deshalb bitte ich Euch um hilfe.
Wenn jemand sich die Mühe macht mir dabei zu helfen, wäre ich ihm sehr dankbar!
vielen dank
rdg
ich bin mal wieder dabei mich an qt herranzuwagen, doch ich bekomme es nicht hin.
Ich will ein Stapellayout, in dem ich anstatt eines widgets ein layout ändern kann.
main.cpp
Code:
#include <QApplication>
#include <QtGui>
#include "StapelLayout.h"
#include "Zeiger_normal.h"
#include "ButtonBox.h"
int main(int argc, char *argv[]){
QApplication app(argc, argv);
StapelLayout *w;// = new StapelLayout;
Zeiger_normal *zeigernormal;// = new zeiger_normal;
ButtonBox *buttonbox;
//zeigerDialog zd;
//zd.setAttribute(Qt::WA_QuitOnClose);
w->addStapel("Zeiger normal",zeigernormal);
return app.exec();
}
StapelLayout.h
Code:
#ifndef STAPELLAYOUT_H
#define STAPELLAYOUT_H
#include <QLayout>
#include <QListWidget>
#include <QStackedLayout>
class StapelLayout : public QLayout {
public:
StapelLayout(QLayout *parentLayout = 0);
void addStapel(const QString& title, QLayout *lay);
private:
QStackedLayout *layoutStack;
QListWidget *pageListWidget;
};
#endif
StapelLayout.cpp
Code:
#include "StapelLayout.h"
#include <QtGui>
#include <QApplication>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QGridLayout>
#include <iostream>
using namespace std;
StapelLayout::StapelLayout( QLayout *parentLayout) : QLayout (parentLayout) {
QVBoxLayout *vlay = new QVBoxLayout;
QHBoxLayout *hlay = new QHBoxLayout;
pageListWidget = new QListWidget;
layoutStack = new QStackedLayout;
vlay->addWidget(layoutStack);
vlay->addWidget(Buttonbox);
hlay->addWidget(pageListWidget);
hlay->addWidget(vlay);
lay->addWidget(layoutStack);
// Signal-Slot-Verbindung einrichten
//connect( pageListWidget, SIGNAL( activated(int ) ),
// widgetStack, SLOT( setCurrentIndex( int ) ));
}
void StapelLayout::addStapel(const QString& title, QLayout *lay ) {
pageListWidget->addItem(title);
layoutStack->addlayout(lay);
}
Zeiger_normal.h
Code:
#ifndef ZEIGER_NORMAL_H
#define ZEIGER_NORMAL_H
#include <QApplication>
#include <QObject>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
class Zeiger_normal: public QLayout{
Q_OBJECT
public:
Zeiger_normal();
QGridLayout* grid_zeiger_normal;
};
#endif
Zeiger_normal.cpp
Code:
include <Zeiger_normal.h>
Zeiger_normal::Zeiger_normal(){
QVBoxLayout* mainLayout = new QVBoxLayout(this);
QGridLayout* grid_zeiger_normal = new QGridLayout;
QLabel *label[12][2];
int i =0;
int j =0;
label[i] [j] = new QLabel(tr("<h3><u> Zeiger normal: </u></h3>"));
grid_zeiger_normal->addWidget(label[i][j],i,j);
// 1 0
i=1;
j=0;
label[i][j] = new QLabel(tr("<b> Hat die Adresse |</b>"));
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
j++;
label[i][j] = new QLabel(tr("<b> Inhalt der Adr. |</b>"));
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
j++;
label[i][j] = new QLabel(tr("<b> Inhalt dieser Adr.</b>"));
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
// 2 0
int *ptr;
i=2;
j=0;
label[i][j] = new QLabel(tr("<font color=gray ><b>*ptr;</b></font>"));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
// 3 0
i=3;
j=0;
label[i][j] = new QLabel(QString("<font color=red ><b>&ptr: %1 </b></font>").arg(int (&ptr)));
//label[i][j] = new QLabel(QString(char* &ptr));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
j++;
label[i][j] = new QLabel(QString("<font color=green ><b>ptr: %1 </b></font>").arg(int (ptr)));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
j++;
label[i][j] = new QLabel(QString("<font color=brown ><b>*ptr: %1 </b></font>").arg(int (*ptr)));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
// 4 0
int t=5;
i=4;
j=0;
label[i][j] = new QLabel(tr("<font color=gray ><b>int t=5;</b></font>"));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
//5 0
i=5;
j=0;
label[i][j] = new QLabel(QString("<font color=red ><b>&ptr: %1 </b></font>").arg(int (&t)));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
j++;
label[i][j] = new QLabel(QString("<font color=green ><b>ptr: %1 </b></font>").arg(int (t)));
label[i][j]->setFrameStyle(QFrame::Box | QFrame::Plain);
grid_zeiger_normal->addWidget(label[i][j] ,i,j);
j++;
mainLayout->addLayout(grid_zeiger_normal);
mainLayout->addStretch();
QHBoxLayout* buttonLayout = new QHBoxLayout(this);
QPushButton* exitButton = new QPushButton(tr("Beenden"));
buttonLayout->addStretch();
buttonLayout->addWidget(exitButton);
buttonLayout->addStretch();
mainLayout->addLayout(buttonLayout);
}
ButtonBox.h
Code:
#ifndef BUTTONBOX_H
#define BUTTONBOX_H
#include <QApplication>
#include <QObject>
#include <QWidget>
#include <QGridLayout>
#include <QLabel>
#include <QPushButton>
#include <QHBoxLayout>
#include "StapelLayout.h"
class ButtonBox: public StapelLayout{
Q_OBJECT
public:
ButtonBox();
};
#endif
ButtonBox.h
Code:
#include "ButtonBox.h"
ButtonBox::ButtonBox(){
QHBoxLayout* buttonLayout = new QHBoxLayout;
QPushButton* exitButton = new QPushButton(tr("Beenden"));
buttonLayout->addStretch();
buttonLayout->addWidget(exitButton);
}
Wie der erfahrene Programmierer schnell sieht bin ich damit überfordert.
Zum einen macht die Funktion addStapel sehr zuschaffen zum anderen auch vlay->addWidget(Buttonbox); <-Eltern ist schon QLayout . Insgesammt kann man sagen, habe ich mich ziemlich verlaufen und es hakt am ganzen Code.
Ich habe mich schon genug mit den Grundlagen befasst, doch es fällt mir sehr schwer diese auch in der Praxis anzuwenden, ich habe halt keine praktische Erfahrung, deshalb bitte ich Euch um hilfe.
Wenn jemand sich die Mühe macht mir dabei zu helfen, wäre ich ihm sehr dankbar!
vielen dank
rdg
Zuletzt bearbeitet: