Slot in Slot auslösen
Verfasst: 15. Oktober 2010 17:02
Hi,
Ich habe folgendes Problem:
Ich habe ein Main Window.
Darin sind 4 Buttons, wo durch einen Klick jeweils ein Slot ausgelöst wird.
In diesem Slot habe ich 4Labels und 4 Buttons, die dann, wenn auf die Buttons geklcikt wurde, angezeigt werden.
Das geht ja auch alles.
Nun möchte ich aber "innerhalb" des Slots auch noch die Buttons mit Slots verbinden. Dieser Slot soll dann einen Dialog öffnen, zum Auswählen eines Fotos öffnen, welches dann in einem Qpixmap gespeichert wird und einem Label zugewiesen wird.
Das ganze geht aber leider nciht.
Folgende Fehlermeldungen:
1. invalid use of "this" in non-member function
2. l_bild1 was not declared in this scope
Hoffe das war einigermaßen verständlich erklärt.
Jetzt noch die wichtigsten Passagen in meinem kleinen Code:
mfg
Ich habe folgendes Problem:
Ich habe ein Main Window.
Darin sind 4 Buttons, wo durch einen Klick jeweils ein Slot ausgelöst wird.
In diesem Slot habe ich 4Labels und 4 Buttons, die dann, wenn auf die Buttons geklcikt wurde, angezeigt werden.
Das geht ja auch alles.
Nun möchte ich aber "innerhalb" des Slots auch noch die Buttons mit Slots verbinden. Dieser Slot soll dann einen Dialog öffnen, zum Auswählen eines Fotos öffnen, welches dann in einem Qpixmap gespeichert wird und einem Label zugewiesen wird.
Das ganze geht aber leider nciht.
Folgende Fehlermeldungen:
1. invalid use of "this" in non-member function
2. l_bild1 was not declared in this scope
Hoffe das war einigermaßen verständlich erklärt.
Jetzt noch die wichtigsten Passagen in meinem kleinen Code:
Code: Alles auswählen
//Die 4 Buttons die am Anfang da sind mit den Signal and Slots
auswahl1 = new QPushButton("2 Bilder");
auswahl2 = new QPushButton("3 Bilder");
auswahl3 = new QPushButton("4 Bilder");
auswahl4 = new QPushButton("5 Bilder");
connect(auswahl1, SIGNAL(clicked()), this, SLOT(f_auswahl1()));
connect(auswahl2, SIGNAL(clicked()), this, SLOT(f_auswahl2()));
connect(auswahl3, SIGNAL(clicked()), this, SLOT(f_auswahl3()));
connect(auswahl4, SIGNAL(clicked()), this, SLOT(f_auswahl4()));
//Layout etc.
QWidget *auswahl = new QWidget;
auswahl_layout = new QHBoxLayout;
auswahl_layout->addWidget(auswahl1);
auswahl_layout->addWidget(auswahl2);
auswahl_layout->addWidget(auswahl3);
auswahl_layout->addWidget(auswahl4);
auswahl->setLayout(auswahl_layout);
setCentralWidget(auswahl);
Code: Alles auswählen
void MainWindow::f_auswahl1() {
layout = new QGridLayout;
bilder = new QWidget;
l_bild1 = new QLabel("Bild 1");
l_bild2 = new QLabel("Bild 2");
l_bild3 = new QLabel("Bild 3");
l_bild4 = new QLabel("Bild 4");
b_auswahl1 = new QPushButton("");
b_auswahl2 = new QPushButton("");
b_auswahl3 = new QPushButton("");
b_auswahl4 = new QPushButton("");
connect(b_auswahl1, SIGNAL(clicked()), this, SLOT(bild_auswerten1()));
layout->addWidget(b_auswahl1, 0, 0);
layout->addWidget(b_auswahl2, 0, 1);
layout->addWidget(l_bild1, 1, 0, 3, 1);
layout->addWidget(l_bild2, 1, 1, 3, 1);
bilder->setLayout(layout);
setCentralWidget(bilder);
}
Code: Alles auswählen
void bild_auswerten1() {
QString fileName = QFileDialog::getOpenFileName(this, "Open Image", "/home/jana", "Image Files (*.png *.jpg *.bmp)");
QPixmap *foto = new QPixmap(fileName);
l_bild1->setPixmap(foto);
}