Hallo,
ich habe moeglicherweise etwas Grundsaetzliches nicht verstanden. Ich habe ein Widget geschrieben, welches beim Aufruf in Main()... einwandfrei funktioniert.
KZeit.h:
#include <QLayout>
#include <QObject>
#include <QString>
class KZeit : public QWidget {
Q_OBJECT
private:
QGridLayout *layout;
QLabel *text;
QSlider *balken;
QLCDNumber *stunden;
QLCDNumber *minuten;
public:
KZeit(QString t,int min,int minimum,int maximum);
int getValue();
public slots:
void fresh(int min);
};
#endif // KZEIT_H
KZeit.cpp:
#include "KZeit.h"
KZeit::KZeit(QString t,int min,int minimum,int maximum) {
layout = new QGridLayout(this);
text = new QLabel(t,this);
balken = new QSlider(this);
stunden = new QLCDNumber(2,this);
minuten = new QLCDNumber(2,this);
balken->setOrientation(Qt::Horizontal);
balken->setMinimum(minimum);
balken->setMaximum(maximum);
stunden->display(min/60);
minuten->display(min%60);
layout->addWidget(text,0,0);
layout->addWidget(balken,0,1);
layout->addWidget(stunden,0,2);
layout->addWidget(minuten,0,3);
QObject::connect(balken,SIGNAL(sliderMoved(int)),this,SLOT(fresh(int)));
}
void KZeit::fresh(int min) {
stunden->display(min/60);
minuten->display(min%60);
}
int KZeit::getValue() {
int m,h;
m = minuten->intValue();
h = stunden->intValue();
return (60*h + m);
}
Wenn ich nun ein QDialog erzeuge, und dort ein paar Instanzen KZeit einsetzen moechte, beendet sich das Programm instantan, soll heissen 'segmentation fault'
lesen = new KZeit(QString("Lesen"),100,0,360);
schlafen = new KZeit(QString("Schlafen"),100,0,360);
vZeit->addWidget(schlafen,1,0);
vZeit->addWidget(essen,2,0);
Zeit ist ein QGridLayout. Der Debugger bringt mich auf die Idee, dass der Fehler im addWidget steckt.
Ausserdem stellt sich noch das Problem, dass ich ja das parent-QWidget definieren moechte. Funktioniert dies mittels:
KZeit::KZeit(QString t,int min,int minimum,int maximum,QWidget *parent) : QWidget(parent=0)...
?
Danke schonmal...
Qwidget in QDialog einbinden und *parent QWidget
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
vZeit ist initialisiert. Wenn ich den Debugger laufen lasse, beendet dieser irgendwann. Der Cursor befindet sich dann im Quelltext bei den addWidget befehlen.
Habe den Fehler entdeckt. Lag wahrscheinlich an meiner Unerfahrenheit. Habe sehr lange daran gearbeitet, bevor ich's in's Forum geschrieben habe. Es gab ein KZeit element, was nicht ordentlich initialisiert wurde.
Danke fuer die Muehe!
Habe den Fehler entdeckt. Lag wahrscheinlich an meiner Unerfahrenheit. Habe sehr lange daran gearbeitet, bevor ich's in's Forum geschrieben habe. Es gab ein KZeit element, was nicht ordentlich initialisiert wurde.
Danke fuer die Muehe!
Zuletzt geändert von gary am 22. März 2010 14:56, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten: