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