Russian Qt Forum

Qt => Общие вопросы => Тема начата: A-GENT от Ноябрь 04, 2010, 00:02



Название: Помогите с преобразованием типов данных
Отправлено: A-GENT от Ноябрь 04, 2010, 00:02
Недавно начал осваивать QT, да и программирование в целом  :). Проблема вот в чем. Имеется переменная QString str в которую заносятся все значения считанные прибором через сокет. Прибор эти значения присылает в ascii кодах (пример приходит строка 1234.56Е-02 нужно преобразовать в 12.3456 типа double). В справке нашел пример перевода из String в Double.  По идее результат хранится в переменной d, но она почему то не выводится. Может какая ошибка в строчке при выводе значения?
Цитировать
void MainWindow::slotReadyRead()
{
    QString str = m_pTcpSocket->readAll();  // переменной str присваиваются все значения полученные при выполнении считывания сокета
    bool ok;                                            // преобразование из String в Double
         double d;
         d = QString( str ).toDouble(&ok);
   ui->txtInfo->append("<tt><font color=#0000aa><b>Received: </b></font></tt><font color=#000088>"+d+"</font>");  // вывод значения

}

при сборке выводит ошибку
Цитировать
invalid operands of types 'const char [74]' and 'double' to binary 'operator+'


Название: Re: Помогите с преобразованием типов данных
Отправлено: BlackTass от Ноябрь 04, 2010, 00:09
QString("<tt><font color=#0000aa><b>Received: </b></font></tt><font color=#000088>%1</font>").arg(d)


Название: Re: Помогите с преобразованием типов данных
Отправлено: A-GENT от Ноябрь 04, 2010, 00:19
Оперативно реагируете :) Огромное человеческое спасибо :) Сборка запускается. Завтра на приборе проверю


Название: Re: Помогите с преобразованием типов данных
Отправлено: A-GENT от Ноябрь 22, 2010, 00:58
Пришлось заморочиться с преобразованием из double обратно в string. Проблемка решена :)

Цитировать
QString str = m_pTcpSocket->readAll();
    QString str2;
    bool ok;
         double d;
         d = QString( str ).toDouble(&ok);
//         qDebug()<< d;
   // ui->txtInfo->append("<tt><font color=#0000aa><b>Received: </b></font></tt><font color=#000088>"+str.left(str.length()-2)+"</font>");
    str2 = QString("%1 dBm").arg(d,0,'f',3);
    ui->txtInfo->append("<tt><font color=#0000aa><b>Received: </b></font></tt><font color=#000088>"+str2+"</font>");