Добавить строку из textEdit в QStack - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь захватить содержимое из textEdit и добавить его в QStack. Содержание, которое я разделяю, чтобы иметь возможность изменить порядок захваченного предложения. Я уже рассмотрел эту часть, но я хочу быть в состоянии преобразовать из QStringList, чтобы быть переданным в QStack. Вот что у меня есть:

    void notepad::on_actionReversed_Text_triggered()
{

    QString unreversed = ui->textEdit->toPlainText();
    QStringList ready = unreversed.split(QRegExp("(\\s|\\n|\\r)+"), QString::SkipEmptyParts);

    QStack<QString> stack;
    stack.push(ready);

    QString result;

    while (!stack.isEmpty())
    {
        result += stack.pop();
        ui->textEdit->setText(result);
    }


}

1 Ответ

0 голосов
/ 18 февраля 2020

QStack::push принимает только объекты этого типа шаблона.

т.е. в вашем случае вы должны положить sh QString на QStack<QString>, а не list.

Итак, итерируйте список строк, нажимая каждую по очереди.

foreach (const QString &str, ready) {
    stack.push(str);
}

Что-то еще не так, что вы обновляете textEdit внутри for l oop. Вы действительно хотите создать строку в l oop и , а затем обновить текст.

QString result;
while (!stack.isEmpty()) {
    result += stack.pop();
}

ui->textEdit->setText(result);

Альтернативный ответ может заключаться в том, чтобы покончить со стеком и просто выполнить итерацию QStringList ready в обратном порядке для создания строки result.

...