Slots in QTabWidget Widgets erreichen
Verfasst: 12. Oktober 2016 14:12
Hallo Liebe Forengemeinde,
ich hoffe das der Betreff nicht zu verwirrend ist.
Ich habe in einem Dialog ein QTabWidget in welchem ich mehrere (derzeit 3) Pages mit GUI-Elementen habe. Die jeweiligen Pages werden durch je eine eigene Klasse repräsentiert. Mein Problem ist nun, das ich gerne die 3 jeweils pro Page-Klasse vorhandenen Slots aus dem Dialog heraus ereichen möchte.
Auf dem Dialog gibt es eine QDialogButtonBox mit 3 Buttons (OK, Apply, Cancel). Beim Klicken auf einen dieser Buttons möchte ich das Signal an die in dem QTabWidget vorhandenen Pages weiterleiten, so das diese individuell darauf reagieren können.
So wie ich es bis jetzt aufgebaut habe kann ich die Slots mit QObject::connect nicht erreichen. Geht das nur wenn ich die einzelnen Pages
jeweils mit einem eindeutigen Pointer erst erzeuge und dann die Slots verbinde?
Ich würde mich freuen wenn mir jemand weiterhelfen könnte.
Grüße Netzschleicher
ich hoffe das der Betreff nicht zu verwirrend ist.
Ich habe in einem Dialog ein QTabWidget in welchem ich mehrere (derzeit 3) Pages mit GUI-Elementen habe. Die jeweiligen Pages werden durch je eine eigene Klasse repräsentiert. Mein Problem ist nun, das ich gerne die 3 jeweils pro Page-Klasse vorhandenen Slots aus dem Dialog heraus ereichen möchte.
Auf dem Dialog gibt es eine QDialogButtonBox mit 3 Buttons (OK, Apply, Cancel). Beim Klicken auf einen dieser Buttons möchte ich das Signal an die in dem QTabWidget vorhandenen Pages weiterleiten, so das diese individuell darauf reagieren können.
Code: Alles auswählen
...
ui->tabOptionPages->addTab(new PageEnvironment(), tr("Environment"));
ui->tabOptionPages->addTab(new PageDatabase(), tr("Database"));
ui->tabOptionPages->addTab(new PageMiscellaneous(), tr("Miscellaneous"));
...Code: Alles auswählen
class PageEnvironment : public QWidget {
Q_OBJECT
private: // Attribute
public: // Attribute
public: // Kontruktoren & Destruktor
explicit PageEnvironment(QWidget *parent = 0);
~PageEnvironment();
protected: // Event Methoden
void changeEvent(QEvent *event);
private: // Methoden
public: // Methoden
signals:
private slots:
public slots:
void dialogOKClicked();
void dialogApplyClicked();
void dialogCancelClicked();
};Code: Alles auswählen
class PageDatabase : public QWidget {
Q_OBJECT
private: // Attribute
public: // Attribute
public: // Kontruktoren & Destruktor
explicit PageDatabase(QWidget *parent = 0);
~PageDatabase();
protected: // Event Methoden
void changeEvent(QEvent *event);
private: // Methoden
public: // Methoden
signals:
private slots:
public slots:
void dialogOKClicked();
void dialogApplyClicked();
void dialogCancelClicked();
};Code: Alles auswählen
class PageMiscellaneous : public QWidget {
Q_OBJECT
private: // Attribute
public: // Attribute
public: // Kontruktoren & Destruktor
explicit PageMiscellaneous(QWidget *parent = 0);
~PageMiscellaneous();
protected: // Event Methoden
void changeEvent(QEvent *event);
private: // Methoden
public: // Methoden
signals:
private slots:
public slots:
void dialogOKClicked();
void dialogApplyClicked();
void dialogCancelClicked();
};jeweils mit einem eindeutigen Pointer erst erzeuge und dann die Slots verbinde?
Code: Alles auswählen
...
pageEnvironment = new PageEnvironment();
pageDatabase = new PageDatabase();
pageMiscellaneous = new PageMiscellaneous();
ui->tabOptionPages->addTab(pageEnvironment, tr("Environment"));
ui->tabOptionPages->addTab(pageDatabase, tr("Database"));
ui->tabOptionPages->addTab(pageMiscellaneous, tr("Miscellaneous"));
connect(buttonsDialog->button(QDialogButtonBox::Ok), SIGNAL(clicked(bool)), pageEnvironment, SLOT(dialogOKclicked());
...Grüße Netzschleicher