Как прочитать каждую строку QPlainTextEdit в Qt? - PullRequest
3 голосов
/ 13 ноября 2011

Я хочу создать программу, в которой я беру каждую строку QPlainTextEdit и отправляю ее в WebView, который будет загружать эти URL-адреса.Мне не нужно проверять URL-адреса, потому что система делает это так

http://someurl.com/ + each line of the QPlainTextEdit

У меня есть несколько идей, которые я не знаю, как использовать:

  1. ИспользуйтеЦикл foreach, который заставит себя ждать 5 секунд, чтобы повторить цикл
  2. Заставить QTimer ждать как 5 секунд и пометить целое число, и когда целое число достигнет числа строк, оно остановится

    И все это будет выполняться каждые 4 часа при ожидании с другим таймером.

1 Ответ

6 голосов
/ 13 ноября 2011

Прежде всего вам нужно содержимое QPlainTextEdit.Получите их и разделите их, используя новый разделитель строк, чтобы получить список из QStrings, каждый из которых представляет строку.

QString plainTextEditContents = ui->plainTextEdit->toPlainText()
QStringList lines = plainTextEditContents.split("\n");

Самый простой способ обработки строк - использовать QTimer и хранить где-нибудьтекущий индекс в списке.

// Start the timer
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(processLine()));
timer->start(5000);

Теперь слот вызывается всякий раз, когда срабатывает таймер.Он просто получает текущую строку, и вы делаете это как хотите.

void processLine(){
   // This is the current index in the string list. If we have reached the end
   // then we stop the timer.
   currentIndex ++;

   if (currentIndex == lines.count())
   {
       timer.stop();
       currentIndex = 0; 
       return;
   }

   QString currentLine = lines[currentIndex];
   doSomethingWithTheLine(currentLine); 
}

Аналогично поступаете так же с таймером на 4 часа.

...