Название: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 09:08 День добрый!
В QLineEdit пользователь вводит число в шестнадцатеричке, необходимо преобразовать строку в число,а затем преобразовать число в массив типа char. Пытался вот так, но не выходит. Код: QString inval = ui->inputLINE->text(); Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 09:22 Код: char * QByteArray::data () Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 09:33 И как в итоге должно получиться? С учётом того, что пользователь вводит например 1020 и это должно восприниматься как 0x10, 0x20 в массиве.
Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 10:26 Вы уж определитесь, что вам нужно, а то в первом сообщении одно, в коде другое, а теперь третье..
Чтобы в массиве лежали 0x10 и 0x20, надо отдельно эти 0х10 и 0х20 добавлять. Например через .append(0x20). Сразу добавить 1020 в массив не получится. Точнее получится, но сохранится только первый байт из всего числа. Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 10:33 Т.е. если пользователь ввёл например 10203040, то разбить строку на 0x10, 0x20, 0x30, 0x40 сразу никак не получится?
Ну допустим перед разбиением конвертируем через toUint(NULL, 16). Т.е. как будет выглядеть код если на входе 10203040, а на выходе нужен массив 0x10, 0x20... Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 10:54 Сначала разбей строку(типа "10203040") на подстроки ("10", "20", "30", "40"), переведи каждую в int и добавляй в массив.
Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 11:05 А как проще всего сделать разбиение на подстроки?
Название: Re: Получение данных из QLineEdit Отправлено: carrygun от Май 21, 2014, 11:12 Очевидно что boost::spirit.
Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 11:26 ??? я конечно все понимаю, но пройтись по строке и выцеплять символы по паре можно без всяких духов ;D ;D
Код: QString dataString("10245634f"); Название: Re: Получение данных из QLineEdit Отправлено: carrygun от Май 21, 2014, 11:51 Использовать QString сейчас не профессионально, ходят слухи, что даже не законно.
Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 11:54 Предъявите ваши доказательства ;D
Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 11:55 Был бы какой-нить разделитель было бы просто очень. А так спасибо сделаю. Только мне придётся сначала строку конвертировать в uint,а потом уже с ней работать, чтобы hex был hex.
Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 12:28 А ещё вопрос. Т.е. массив типа string получен, как его преобразовать в массив типа QByteArray?
Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 12:29 А чем аргументирован отказ от QString в пользу std::string?
Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 12:38 В полученном массиве будут лежать при вводе 1A1B1C не числа 0x1A, 0x1B, а значения ASCII символов?
Код: QByteArray out_val; Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 12:41 Без преобразований каких-либо да, ASCII-код.
out_val в коде перезаписывается на каждой итерации.. Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 21, 2014, 13:20 Ага забыл про append.
Вот что в итоге получилось: Код: QByteArray out_val; Название: Re: Получение данных из QLineEdit Отправлено: OKTA от Май 21, 2014, 13:28 Работает?
Можно избавиться от QStringList и foreach, если делать манипуляции с подстроками в while. Название: Re: Получение данных из QLineEdit Отправлено: kruft от Май 22, 2014, 08:07 Код: QByteArray out_val; Да вот так тоже работает, спасибо за помощь |