Где происходит вызов функции? - PullRequest
0 голосов
/ 18 апреля 2011

В следующем коде из Программирование на C ++ GUI с использованием Qt 4 , где происходит вызов функции on_lineEdit_textchanged(), поскольку это явно не показано в коде?

#include <QtGui>
#include "gotocelldialog.h"
GoToCellDialog::GoToCellDialog(QWidget *parent): QDialog(parent)
{
setupUi(this); 
QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
QValidator *validator = new QRegExpValidator(regExp, this);
lineEdit->setValidator(validator);
connect(okButton, SIGNAL(clicked()),this, SLOT(accept()));
connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
}
void GoToCellDialog::on_lineEdit_textChanged()
{
okButton->setEnabled(lineEdit->hasAcceptableInput());
}

Спасибо.

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Qt знает, как автоматически подключать определенные сигналы и порты, которые названы в соответствии с соглашением on_ObjectName_SignalName (). См. http://doc.qt.nokia.com/latest/designer-using-a-ui-file.html#automatic-connections для примера. API Qt описывает эту функциональность на http://doc.qt.nokia.com/latest/qobject.html#auto-connection.

0 голосов
/ 18 апреля 2011

Если on_lineEdit_textChanged() назначено через IDE компоненту, например QLineEdit, метод вызывается самой платформой, когда пользователь изменяет содержимое компонента.

Другими словами, это функция обратного вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...