【问题标题】:QByteArray member not found未找到 QByteArray 成员
【发布时间】:2016-03-07 16:41:22
【问题描述】:

我有一个在 Qt Creator 的 Ubuntu 桌面系统上编写的应用程序,我想在另一个系统(Ubuntu 服务器)上编译它。此服务器没有 GUI,因此必须通过 CLI 进行编译。发出 make 命令后,它开始编译,但抛出编译器错误:

错误:‘fromStdString’不是‘QByteArray’的成员 QByteArray myData = QByteArray::fromStdString(data);

完全相同的代码可以在另一个系统上找到并且可以正常编译。我应该怎么做才能解决这个问题?是系统上安装的库的问题还是其他问题?

【问题讨论】:

  • 我找不到QByteArray::fromStdString() 函数。请指出定义它的 Qt 文档。
  • 问题标题要求 QString 成员,但您的代码使用的是 QByteArray。你真正需要哪一个?另外,请告诉我们您在两个系统中使用的 Qt 版本

标签: c++ qt


【解决方案1】:

我认为问题是这个,引用http://doc.qt.io/qt-5/qbytearray.html#fromStdString

此功能是在 Qt 5.4 中引入的。

也就是说,如果你使用的是 Qt5,那么在 Qt4 中确实没有这样的成员函数。

【讨论】:

    【解决方案2】:

    在 Qt4 中,QString::fromStdString() 需要使用 STL 支持编译 Qt,所以这可能是您的问题。

    来自Qt Docs

    此构造函数仅在 Qt 配置了 STL 时可用 启用兼容性。

    但是,如果您使用的是 QByteArray,请参阅 @iksemyonov 的回答

    【讨论】:

    • 您的链接指向QString 类的文档,而问题是关于QByteArray 类的。
    • 你说得对,我对 OP 的标题感到困惑,它表明它是 QString 成员。我会要求澄清
    • 查看 QByteArray 和 QString 的内部实现,看起来你和 iksemyonov 的答案都是相关的。 QByteArray::fromStdString 看起来只有在为 Qt 启用 STL 兼容性时才有效。
    猜你喜欢
    • 1970-01-01
    • 2012-03-08
    • 2017-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-08-02
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    相关资源
    最近更新 更多