С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/34: Рейтинг темы: голосов - 34, средняя оценка - 4.79
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345

Маски для line\text Edit

29.08.2014, 09:49. Показов 7145. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.
Начинаю изучать возможности Design в QTCreator. Возникло не понимание, как реализовать. Сейчас стоит задача, считать информацию из lineEdit и использовать ее в функциях.
1. Есть поле, в которое пользователь должен ввести IP адресс. Как правильно наложить маску или что надо сделать, чтобы значение считывалось как единое целое, и можно бывло бы использовать например в QHostAddress?
Точнее даже будет спросить вот как, есть поле lineEdit, я назначу ему маску
ui->IpEdit->setInputMask("000.000.000.000");
А как использовать это значение (к чему\как присвоить) чтобы это был аналог записи, например
host = new QHostAddress("127.0.0.1");
2. Как задать правильно, чтобы значения в поле lineEdit заданные через пробел, считывались как отдельные значения и заносились в массив? Например char arr[3] массив, в lineEdit вводим через пробел значения 55 7 179 нажимаем энтер и получаем на выходе arr[0] = 55, arr[1] = 7, arr[2] = 179?
Заранее спасибо за любые подсказки.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.08.2014, 09:49
Ответы с готовыми решениями:

Line edit text orientation vertical
можна сделать в line edit text orientation vertical?

Вывод QVector в line edit
Здравствуйте подскажите есть QVector <QString> v(200); в него я записываю QString потом мне его нужно вывести в line edit Подскажите...

Проверка line edit на валидность email
Добрый день! Помогите с проблемкой. Имеется виджет line edit. в поле вводится email. потом (я думаю это нужно делать через QRegExp)...

8
232 / 232 / 69
Регистрация: 30.09.2012
Сообщений: 545
29.08.2014, 12:11
Sph, 1. Так и использовать, QHostAddress принимает же QString.

C++ (Qt)
1
2
qDebug() << ui->lineEdit->text();
QHostAddress(ui->lineEdit->text());
2. split метод с QString

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
QStringList l = ui->lineEdit->text().split(" ");//ввод "55 7 179" 
for(int i = 0; i < l.size(); ++i)
{
    qDebug() << l[i];
}
/*вывод:
"55" 
"7" 
"179" 
*/
1
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
01.09.2014, 09:21  [ТС]
Спасибо!
А как перевести элемент строки в массив байт? Чтобы эдемент l[i] передавался в элемент QByteArray array[i]? Как правильно конвертировать значение?
0
11 / 11 / 1
Регистрация: 14.07.2014
Сообщений: 186
01.09.2014, 09:34
может так как нибудь?
C++ (Qt)
1
ui->textEdit->text().toInt() << l[i]
0
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
01.09.2014, 09:47  [ТС]
Цитата Сообщение от olegjan Посмотреть сообщение
может так как нибудь?
Код C++ (QT)
1
ui->textEdit->text().toInt() << l[i]
К сожалению ругается, уже была попытка так извернуться, ибо не знаю как правильно. Выдает
C++ (Qt)
1
2
error: ambiguous overload for 'operator<<' (operand types are 'int' and 'QString')
 ui->CmdFullEdit->text().toInt() << cmdstr[j];
^

пытаюсь передать вот так и это явно не правильно.
C++ (Qt)
1
ba[i] = ui->CmdFullEdit->text().toInt() << cmdstr[j];
Добавлено через 9 минут
Было найдено след. решение, на сколько оно верное?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
QByteArray ba;
     ba.resize(3);
        ba[0] = ui->LineEdit->text().toInt();
        ba[1] = ui->Line1Edit->text().toInt();
        ba[2] = ui->Line2Edit->text().toInt();
for(int i = 0; i < 3; i++) {
QStringList cmdstr = ui->CmdFullEdit->text().split(" ");
for (int j = 0; j < cmdstr.size(); j++) {
ba[i] = cmdstr[j].toInt();
}}
0
 Аватар для alexey_rage
596 / 396 / 79
Регистрация: 23.10.2013
Сообщений: 1,143
01.09.2014, 09:59
Цитата Сообщение от Sph Посмотреть сообщение
А как перевести элемент строки в массив байт? Чтобы эдемент l[i] передавался в элемент QByteArray array[i]? Как правильно конвертировать значение?
C++ (Qt)
1
2
3
4
5
6
7
    QString str = "bla-bla-bla";
    QByteArray array;
// Выбрать нужный вариант
    array = str.toLocal8Bit();
    array = str.toAscii();
    array = str.toLatin1();
    array = str.toUtf8();
0
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
01.09.2014, 10:34  [ТС]
Спасибо за наводку, пойду курить матчасть!
0
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
08.09.2014, 13:35  [ТС]
День добрый.
По прежнему не могу организовать правильно массив.
Есть несколько lideEdit'ов куда вводятся пользователем значения.
В одном случае надо просто считать значение, а в другом несколько значений сразу.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
line1_Edit -> 01 // вводят одно число
line2_Edit -> 02 03 04 //вводят последовательность чисел
 
QByteArray ba;
     ba.resize(6);
        ba[0] = ui->line1_Edit->text().toInt(); //считали 01
    QStringList cmdstr = ui->line2_lEdit->text().split(" "); // пробегаем по элементам строки, разделитель пробел
    ba[1] = ?? // сюда должно поместиться количество введеных значений. Сейчас значение "03", т.к. три значения было введено
    ba[2] = ?? // сюда должен попасть "0", .т.к. идет заполнение старший-младший разряд,и два элемента массива [1]-[2] под это отведены.
           // если бы значений в строке line2_Edit было бы 256 запись была бы ba[1]=255 ba[2]=1
    for (int j = 0; j < cmdstr.size(); j++)
              {
                ba[j+3] = cmdstr[j].toInt(); //заполняю элементы массива введеными ранее значениями. ba[3]=02; ba[4]=03; ba[5]=04;
               
              }
// на выходе запись должна быть 01 03 00 02 03 04
Если значение cmdstr было бы не QStringList можно было бы провернуть запись вида
C++ (Qt)
1
2
3
ba[1]=((quint8*)&cmdstr)[1];
ba[2]=((quint8*)&cmdstr)[0];
//чтобы разбить значения на младший и старший байт, но я не могу найти аналог для данной ситуации.
Добавлено через 1 час 22 минуты
Извернувшись можно сделать так, но тогда третий элемент из массива (второй в значениях младший-старший) остается под вопросом пракильного заполнения

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
QByteArray ba;
     ba.resize(6);
        ba[0] = ui->line1_Edit->text().toInt();
        QString str = ui->line2_lEdit->text();
        QStringList cmdstr = str.split(" ");
        ba[1] = str.size();
        ba[2] = ?? // сейчас принудительно стоит ba[2]=0;
for (int j = 0; j < cmdstr.size(); j++)
              {
                ba[j+3] = cmdstr[j].toInt();
}
0
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
10.09.2014, 15:01  [ТС]
проблема решена. Может кому пригодится. Распарсить строку можно вот так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
QByteArray ba;
     ba.resize(6);
        ba[0] = ui->line1_Edit->text().toInt();
       QStringList cmdstr = ui->line2_lEdit->text().split(" "); // за счет сплит разбиваем строку по пробелам
       quint8 cmd = cmdstr.size(); // берем размер строки
      ba[2] = ((quint8*)&cmd)[1]; // этип преобразованием выцепляем старший и младший байт
      ba[3] = ((quint8*)&cmd)[0];
for (int j = 0; j < cmdstr.size(); j++)
              {
                ba[j+3] = cmdstr[j].toInt(); // тут присваиваем элементам массива все что вводили в строке
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.09.2014, 15:01
Помогаю со студенческими работами здесь

Переход на другой text edit
В программе имеется несколько text edit, идущих друг за другом, как сделать так, чтобы при на нажатии на Enter, курсом с одного поля...

Создание Plain Text Edit в новом окне
void MainWindow::open_new_window(){ QMainWindow *window=new QMainWindow(this); window-&gt;show(); QPlainTextEdit...

Text edit - получение текущего введенного символа
Возникла такая потребность Нужно получить как то символ, который я ввел в окно text edit.. Не подскажете?

Некое подобие маски в Edit
в Edit такой текст 0.00 как сделать так чтобы когда начинаю вводить в него цифры например 12345 то они писались вместо первого нуля вот так...

Warning: Illegal string offset 'text' in Z:\domains\phpsite\index.php on line 26 m
Добрый день! Помогите разобраться что не так! Выдает ошибку: &quot;Warning: Illegal string offset 'text' in Z:\domains\phpsite\index.php on...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru