我正在构建一个用于监控串口数据的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*
。我本可以使用{{1}而不是std::string
,但qt gui对象与QString更好地兼容,我也需要QString
方法。
这是我得到的错误:
没有匹配成员函数来调用'readLine'。 第一个参数没有从'QChar *'到'char *'的已知转换。
如何解决这个问题?
答案 0 :(得分:3)
你不能,或者至少你不想(当然在C ++中你可以将QChar *转换为char *但是这不会使它工作)。只需将数据读入QByteArray,然后将其转换为QString。
答案 1 :(得分:2)
这有点棘手,因为你需要为readline()分配空间来复制。
您可以使用an initial size创建一个QString,但我个人会分配一个具有固定合理缓冲区大小的char *,然后从中创建QString - 它使您在调试时更加清晰。