[gelöst] Signal Slot dynamisch auf UI-Objekte

Alles rund um die Programmierung mit Qt
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Also mit QObject klappts nicht..... aber mit QWidget!

Code: Alles auswählen

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow), mapper(NULL)
{
    ui->setupUi(this);

    mapper = new QSignalMapper(this);

    foreach(QLineEdit *le, this->findChildren<QLineEdit *>() )
    {
	if (  le->objectName().startsWith("input", Qt::CaseInsensitive) )
	{
		qDebug() << "Connect Signal mapper..."  << (connect(le, SIGNAL(textChanged(QString)), mapper, SLOT(map())) ? "hat geklappt":"das war wohl nix");
		mapper->setMapping(le, le);
	}

    }
    qDebug() << "Connect  mapper to function..." << (connect(mapper, SIGNAL(mapped(QWidget*)), this, SLOT(on_aTxtChanged(QWidget*))) ? "hat geklappt":"das war wohl nix");
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_aTxtChanged(QWidget *caused)
{
	bool Ok = false;
	int leNo = caused->objectName().right(1).toInt(&Ok);

	Q_ASSERT(Ok);

	foreach(QLineEdit *le, this->findChildren<QLineEdit *>() )
	{
		if (  le->objectName().startsWith("out", Qt::CaseInsensitive) && le->objectName().right(1) == QString::number(leNo) )
		{
			QLineEdit *incomingLE = qobject_cast<QLineEdit *>(caused);
			Q_ASSERT(incomingLE != NULL);

			le->setText(incomingLE->text());
		}

	}

}
ZSchneidi
Beiträge: 65
Registriert: 16. Juli 2009 13:30

Beitrag von ZSchneidi »

Ok, das werde ich erstmal so versuchen bei mir umzusetzen, dank dir erstmal dafür, mal sehen, ob mich das weiter bringt.

EDIT:

Hah, ich dank euch vielmals, jetz scheint es endlich zu laufen ^^

AuE dank dir für dein Beispielcode, der war sehr aufschlussreich und vor
allem doch etwas fortgeschrittener als meiner :wink:

Es lag tatsächlich am QObject... hmm auf sowas muss man erstmal kommen.
Jetz kann ich endlich n bischen weiter basteln.

Viel dank an euch nochmal.
Antworten