Я думаю, что у меня есть фундаментальное недопонимание того, как работает механизм Qt сигнал / слот.
Я работал с примерами программ, и они имеют смысл, но когда я пытался взять их и изменить их, я получил результаты, которых я не понимаю.Ниже приведен пример кода, который представляет собой упрощенную версию того, что я пытался сделать, что, конечно, не делает то, что я хочу.Я неправильно использую механизм сигнала / слота или класс QString
?Способ, которым я использую сигнал / слот, чтобы модифицировать вещи в связанном виде, создавая бесконечный цикл?Любая помощь с благодарностью.
// test.cpp
#include <QApplication>
#include <QDialog>
#include <QLineEdit>
#include <QString>
#include <QVBoxLayout>
class myDialog : public QDialog
{
Q_OBJECT
public:
myDialog() : a_( new QLineEdit ), b_( new QLineEdit )
{
QVBoxLayout* layout( new QVBoxLayout( this ) );
layout->addWidget( a_ );
layout->addWidget( b_ );
connect( a_, SIGNAL( textChanged( const QString& ) ),
this, SLOT( aChanged( const QString& ) ) );
connect( b_, SIGNAL( textChanged( const QString& ) ),
this, SLOT( bChanged( const QString& ) ) );
}
private:
QLineEdit* a_;
QLineEdit* b_;
private slots:
void aChanged( const QString& qs );
void bChanged( const QString& qs );
};
#include "test.moc"
void myDialog::aChanged( const QString& qs )
{
b_->setText( QString::number( 2.0 * qs.toDouble() ) );
}
void myDialog::bChanged( const QString& qs )
{
a_->setText( QString::number( 3.3 * qs.toDouble() ) );
}
int main( int argc, char** argv )
{
QApplication a( argc, argv );
myDialog d;
d.show();
return a.exec();
}