0

我正在尝试从中捕获内容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);
    }


}
4

1 回答 1

0

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

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

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

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


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

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

ui->textEdit->setText(result);


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

于 2020-02-18T06:58:14.093 回答