【问题标题】:How to pass QtString to a function that accepts string as data type如何将 QtString 传递给接受字符串作为数据类型的函数
【发布时间】:2022-01-14 18:48:25
【问题描述】:

我正在尝试将 QT 用于项目以检查 XML 文件的一致性。

我有一个名为Check_XML_Consistency() 的函数,它接受一个字符串作为输入并返回一个字符串作为输出。与QT一起使用时遇到问题,当我将文本文件中的数据转换为字符串并将其转换回qtstring以显示它时,程序给了我一个错误。

我检查并确认问题出在空格上。当我从文本编辑器中删除所有空格时,程序运行良好。

对 QT 初学者有什么建议吗?

这是我的代码:

void MainWindow::on_pushButton_4_clicked()
{
    QString text =ui->plainTextEdit->toPlainText();

    string x=text.toUtf8().constData();
    string Result=Check_XML_Consistency(x);
    QString str = QString::fromUtf8(Result);
    ui->plainTextEdit->setPlainText(str);

}

【问题讨论】:

  • 你说“程序给我一个错误”。你能提供确切的错误信息吗?

标签: qt


【解决方案1】:

如果 Check_XML_Consistency() 实际上采用 std::string 而不是 C-string 那么你会想要

...
string x = text.toStdString();
string Result = Check_XML_Consistency(x);
QString str = QString::fromStdString(Result);
...

【讨论】:

  • 还是不行
  • Check_XML_Consistency 是一个 c++ 函数
  • Check_XML_Consistency 函数的签名是什么?
【解决方案2】:

首先,没有编译时错误。如果它接受并返回std::string,则使用QString::toStdString() 将QString 转换为std::string,反之亦然使用QString::fromStdString(const std::string &str)。 因为我们不知道错误到底是什么,可能是你的函数有问题,但你可以使用第三方 XML 操纵器或 Qt 的 XML 类。

【讨论】:

    猜你喜欢
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多