Qt: Как мне сделать циклы, которые ждут пользовательского ввода на каждой итерации?
Извините за, казалось бы, глупый вопрос, но с Qt я не уверен, как заставить цикл ждать и повторяться с другим вводом.
Например:
DO
{
// DO STUFF
}WHILE (Whatever is in lineEdit widget is not 'N') // User picks between Y and N
Однако я не могу реализовать какой-либо способ ожидания в конце части "do", чтобы пользователь мог редактировать текстовое содержимое lineEdit.
Заранее спасибо!
1 ответ
Решение
В Qt вы бы ничего не делали. Пусть цикл событий QApplication сделает свое дело. Просто подключите слот для обработки к QLineEdit textEdited(const QString & text )
сигнал.
class MyObject : public QObject
{
Q_OBJECT
public:
MyObject();
~MyObject();
private slots:
void handleUserInput(const QString& text);
private:
QLineEdit* lineEdit_;
};
MyObject::MyObject()
: lineEdit_(new QLineEdit)
{
connect(lineEdit_, SIGNAL(textEdited(const QString&)),
this, SLOT(handleUserInput(const QString&)));
}
MyObject::~MyObject()
{
delete lineEdit_;
}
void MyObject::handleUserInput(const QString& text)
{
if(text != "desiredText")
return;
// do stuff here when it matches
}