将文本编辑中的字符串添加到 QStack

Add String from textEdit to a QStack

我正在尝试从 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);
    }


}

QStack::push 只接受其模板类型的对象。

即在您的情况下,您必须将 QString 推入 QStack<QString>,而不是列表。

因此,迭代字符串列表,依次推动每个字符串。

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


其他错误是您正在更新 textEdit inside for 循环。您实际上想在循环中构建字符串,然后 更新文本。

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

ui->textEdit->setText(result);


另一个答案可能是取消堆栈,只是以相反的顺序迭代 QStringList ready 以构建 result 字符串。