我正在构建一个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*
类型。如何将data_ser.data()
返回的QChar*
转换为char*
。我本可以使用std::string
而不是QString
但是qt gui对象与QString更好地兼容,我也需要trimmed
方法。
这是我收到的错误:
没有用于调用"readLine"的匹配成员函数。对于第一个参数,没有从"QChar *"到"char *"的已知转换。
如何解决这个问题??
,或者至少你不想这样做(当然,C++你可以将QChar*转换为char*,但这不会使它工作)。只需将数据读取到QByteArray中,然后将其转换为QString。
这有点棘手,因为您需要为readline()分配空间才能复制到其中。
您可以创建一个具有初始大小的 QString,但就我个人而言,我会分配一个具有固定合理缓冲区大小的 char*,然后从中创建 QString - 这使调试时更加清晰。