打代码就行了 2024-06-20 19:08 采纳率: 0%
浏览 10

qtattend出错

D:\Qt-project\calculater\widget.cpp:26: error: no matching function for call to 'QByteArray::append(QString&)'
....\widget.cpp: In member function 'void Widget::on_equilButton_clicked()':
....\widget.cpp:26:14: error: no matching function for call to 'QByteArray::append(QString&)'
26 | ba.append(expression);
| ~~~~~~~~~^~~~~~~~~~~~
:-1: error: [Makefile.Debug:704: debug/widget.o] Error 1



D:\Qt-project\calculater\widget.cpp:26: error: No matching member function for call to 'append'

  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-20 19:08
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在Qt中,QByteArray::append 函数是用来将数据添加到 QByteArray 对象的末尾。然而,QByteArray::append 并没有直接接受 QString 类型的参数。错误信息表明你尝试将一个 QString 对象传递给 QByteArray::append,但是没有找到合适的重载版本。

    要解决这个问题,你可以将 QString 转换为 QByteArray,然后再使用 append 函数。Qt提供了几种方法来实现这一转换:

    1. 使用 toUtf8()toLatin1() 方法将 QString 转换为 QByteArraytoUtf8() 方法将字符串转换为UTF-8编码的字节序列,而 toLatin1() 方法则将字符串转换为ISO 8859-1编码的字节序列。

      QByteArray ba;
      ba.append(expression.toUtf8());
      
    2. 使用 QByteArray::fromStdString 静态函数,如果你的 QString 是从 std::string 转换来的。

      QByteArray ba;
      ba.append(QByteArray::fromStdString(expression.toStdString()));
      
    3. 使用 QByteArray::fromRawData 静态函数,如果你需要将 QString 的数据直接复制到 QByteArray

      QByteArray ba;
      ba.append(QByteArray::fromRawData(expression.data(), expression.size()));
      

    请注意,使用 toUtf8()toLatin1() 是最常见的方法,因为它们提供了对字符串的直接转换,并且考虑到了字符串的编码。

    如果你需要更多的帮助或者示例代码,你可以查看Qt的官方文档,特别是关于 QByteArrayQString 的部分。以下是一些可能有用的链接:

    希望这些信息能帮助你解决问题。如果你还有其他问题或需要进一步的帮助,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月20日