Vermutlich vermisse ich etwas so Grundlegendes, dass ich mich schämen werde, wenn du es auf mich zeigst, aber im Moment arbeite ich seit fast 3 Tagen an dieser Sache, also denke ich, dass es an der Zeit ist, Hilfe zu holen.QT connect Signal von QDialog mit Hauptfenster
Ich habe ein QWizardProject auf qt5 und für eine dieser Seiten möchte ich einen QPushButton, der einen neuen Dialog startet, wo ich unter anderem eine QCheckbox habe. Signale aus der QCheckbox sollten QLineEdit auf der QWizardPage ändern. Klingt einfach genug, ich kann es einfach nicht zur Arbeit bringen - überhaupt nicht. Ich habe so viele verschiedene Versionen davon ausprobiert (die meisten davon sind fehlgeschlagen). Die neueste Version tut einfach nichts. Danke für jede Hilfe im Voraus!
main.h
#ifndef main_H
#define main_H
#include <QWizard>
#include <QtWidgets>
class QCheckBox;
class QLabel;
class QLineEdit;
class QRadioButton;
class OMVGguiWizard : public QWizard
{
Q_OBJECT
public:
enum { Page_Main1, Page_Main2, Page_Main3};
OMVGguiWizard(QWidget *parent = 0);
};
class Page_Main3 : public QWizardPage
{
Q_OBJECT;
public:
Mainpage_3(QWidget *parent = 0);
private slots:
void btnOptionsbuttonsClicked(QString mode);
private:
QPushButton *OptionsButton;
QLineEdit *receiver;
};
class FindDialog : public QDialog
{
Q_OBJECT
public:
FindDialog(QWidget *parent = 0);
private:
QCheckBox *checkbox;
QGridLayout *mainLayout;
};
#endif
main.cpp
Page_Main3::Page_Main3(QWidget *parent)
: QWizardPage(parent)
{
// ...
DensifyOptionsButton = new QPushButton(tr("Densify Settings"));
receiver = new QLineEdit(tr("empty"));
connect(OptionsButton, &QPushButton::clicked, [this]() { btnOptionsbuttonsClicked("field1"); });
// ...
}
void Page_Main3::btnOptionsbuttonsClicked(QString mode)
{
FindDialog *dialog = new FindDialog;
dialog->show();
}
void Page_Main3::checkboxClicked()
{
receiver->setText("test");
}
FindDialog::FindDialog(QWidget *parent)
: QDialog(parent)
{
checkbox = new QCheckBox(tr("Advanced Options"));
mainLayout = new QGridLayout;
mainLayout->addWidget(checkbox);
setLayout(mainLayout);
connect(checkbox, SIGNAL(clicked()), this, SLOT(Page_Main3::checkboxClicked()));
}
Bitte klarstellen: Was funktioniert nicht? Der Druckknopf startet den Dialog nicht? Das Kontrollkästchen ändert den Text nicht? Etwas anderes? – JKSH
Senden/Empfangen des Signals zurück zum Hauptfenster hat nicht funktioniert. – madde