Я создаю приложение 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 *’ для 1-го аргумента.
Как решить это ??
Это немного сложно, потому что вам нужно выделить место для readline () для копирования.
Вы можете создать QString с начальный размер но лично я выделил бы char * с фиксированным разумным размером буфера, а затем создал бы QString из этого — это делает его намного более понятным при отладке.
Вы не можете или, по крайней мере, не хотите (конечно, в C ++ вы можете привести QChar * к char *, но это не заставит его работать). Просто прочитайте данные в QByteArray, а затем преобразуйте их в QString.