QLabel zur Laufzeit erstellen

Alles rund um die Programmierung mit Qt
gerome69
Beiträge: 188
Registriert: 28. April 2006 22:50
Wohnort: Berlin
Kontaktdaten:

Beitrag von gerome69 »

skfink hat geschrieben:also ich hab da wohl noch einige Missverständnisse mit dem Signal und Slots Prinzip (gehabt) und mit dem Qt Designer Slots Zuweisungen gemacht die nicht nur nicht notwendig waren, sondern auch den Absturtzt herbeiführten.

Jetzt stürtzt das Programm nicht mehr ab, der Debugger zeigt auch an, dass die Zeile um das Label zu erstellen ausgeführt wird

Code: Alles auswählen

void ScrollBook::on_pushButton_clicked()
{
	QLabel* label1 = new QLabel(this);
}
aber es passiert nix, bzw. seh ich zumindest nichts.
Beschäftige dich mal mit dem "Scope" von Variablen!

label1 ist nach Verlassen dieser Methode nicht mehr vorhanden.

G.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Des weiteren wird einfach ein QLabel erzeugt - mehr nicht.
Manchmal frage ich mich warum es die Tutorials und Beispiele überhaupt gibt wenn es nicht auch nur die geringste Bereitschaft gibt sie (nach Hinweisen) durchzuarbeiten... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
skfink
Beiträge: 16
Registriert: 25. März 2008 16:25

Beitrag von skfink »

gerome69 hat geschrieben: Beschäftige dich mal mit dem "Scope" von Variablen!

label1 ist nach Verlassen dieser Methode nicht mehr vorhanden.
da hab ich meinen Code falsch zitiert. Also ich hab das label in der Klassendefinition als Variable definiert und dann bei der Erstellung "QLabel *" weggelassen.

Im Tutorial 4 (Let there be widgets), wird zur Laufzeit ein Button erstellt. Allerdings in Constructor. Also habe ich selbiges versucht und das ging auch.

Code: Alles auswählen

ScrollBook::ScrollBook(QWidget *parent)
    : QMainWindow(parent)
{
	ui.setupUi(this);
	setFixedSize(200, 120);

	QPushButton *quit = new QPushButton(tr("Quit"), this);
	     quit->setGeometry(62, 40, 75, 30);
	     quit->setFont(QFont("Times", 18, QFont::Bold));

	     connect(quit, SIGNAL(clicked()), qApp, SLOT(quit()));
}
Nun wollte ich selbiges auch auf Knopfdruch erreichen und habe den Code in das on_clicked Ereignisses des Buttons geschrieben.

Code: Alles auswählen

void ScrollBook::on_pushButton_clicked()
{
	setFixedSize(200, 120);

	quit2 = new QPushButton(tr("Quit 2"), this);
	quit2->setGeometry(62, 80, 75, 30);
	quit2->setFont(QFont("Times", 18, QFont::Bold));

	connect(quit2, SIGNAL(clicked()), qApp, SLOT(quit2()));
}
Mit der Variablendefinition des Buttons in der Klasse:

Code: Alles auswählen

class ScrollBook : public QMainWindow
{
    Q_OBJECT

public:
    ScrollBook(QWidget *parent = 0);
    ~ScrollBook();

private:
    QPushButton *quit2;
    Ui::ScrollBookClass ui;
private slots:
void on_pushButton_clicked();
};
aber auch hier passiert nichts :cry:
myme
Beiträge: 24
Registriert: 31. März 2008 14:25

Beitrag von myme »

Füge mal ein quit2->show() dazu.
skfink
Beiträge: 16
Registriert: 25. März 2008 16:25

Beitrag von skfink »

^^

danke. Dann krieg ichs ja eventuell auch mit dem Label hin.
Antworten