Russian Qt Forum
Ноябрь 24, 2024, 23:24 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с преобразованием типов данных  (Прочитано 2285 раз)
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+'
Записан
BlackTass
Гость
« Ответ #1 : Ноябрь 04, 2010, 00:09 »

QString("<tt><font color=#0000aa><b>Received: </b></font></tt><font color=#000088>%1</font>").arg(d)
Записан
A-GENT
Гость
« Ответ #2 : Ноябрь 04, 2010, 00:19 »

Оперативно реагируете Улыбающийся Огромное человеческое спасибо Улыбающийся Сборка запускается. Завтра на приборе проверю
Записан
A-GENT
Гость
« Ответ #3 : Ноябрь 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>");
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 20.