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
}
Другие вопросы по тегам