0

我正在构建一个 Qt Gui 应用程序来监视来自串行端口的数据。我正在使用qextserialport库。这是我遇到的问题。

void MainWindow::onDataAvailable()
{
    QString data_ser,data_trimmed;
    port->readLine(data_ser.data(),0);
    data_trimmed = data_ser.trimmed();
    ui->textEdit->append(data_trimmed);
}

readLine方法的第一个参数应该是类型。char*如何将QChar*返回的data_ser.data()转换为char*。我可以使用std::string而不是,QString但是 qt gui 对象与 QString 更好地兼容,我也需要该trimmed方法。

这是我得到的错误:

没有匹配的成员函数调用“readLine”。第一个参数没有从 'QChar *' 到 'char *' 的已知转换。

这个怎么解决??

4

2 回答 2

3

你不能,或者至少你不想(当然在 C++ 中你可以将 QChar* 转换为 char* 但这不会使它工作)。只需将数据读入 QByteArray,然后将其转换为 QString。

于 2012-11-21T18:34:15.340 回答
2

这有点棘手,因为您需要为 readline() 分配空间来复制。

您可以创建一个具有初始大小的 QString,但我个人会分配一个具有固定合理缓冲区大小的 char*,然后从中创建 QString - 它在您调试时会更清晰。

于 2012-11-21T18:33:39.203 回答