Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
1 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 11

Сохранить значение в форме

02.11.2013, 17:17. Показов 2307. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Недавно начал изучать Qt поэтому прошу не пинайте за вопросы)
Я работаю над проектом, в котором через GUI на COM порт отправляются данные и обратно получается ответ от микрокнтроллера. Соединение и дисконнект я осилил. Так же чтение (если данные прут непрерывно).
В главном окне у меня расположены меню соединения, меню установки отправляемого на МК и консоль, в которой отображается полученная от девайса инфа (особо фантазировать я не стал, взял идею из примеров).
Так вот есть окно в котором я задаю некий параметр, который надо отправить на мк. Я хочу, чтобы это значение стало текущим и в поле ввода стояло уже оно. Подскажите как такое реализовать? В прикреплении проект. setdelay.h и setdelay.cpp окно с установкой параметра.
Вложения
Тип файла: zip TempUART.zip (7.9 Кб, 5 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.11.2013, 17:17
Ответы с готовыми решениями:

В форме сохранить значение поля, для следующих открытий формы
В форме есть поле, рядом кнопка "выбрать". Нажав на кнопку изменяем путь на "c:\windows". Совсем закрываем форму, базу данных...

Как сделать чтобы установка флажка в форме очищало значение определенных полей в таблице и форме?
Подскажите пожалуйста как сделать чтобы установка флажка в форме очищала значения других независимых флажков(не входящих в группу...

Счетчик. При нажатии кнопки на второй форме должно изменяться значение метки в первой форме
Подскажите вот есть две формы,при нажатии кнопки на второй форме должно изменяться значение метки в первой форме. Во первых метка это...

5
1 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 11
02.11.2013, 17:45  [ТС]
Изначально делал так, но значения не сохранялись(( Видимо объек уничтожается и сохранения не происходит. Не могу додуматься.
setdelay.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "setdelay.h"
#include "ui_setdelay.h"
#include <QLineEdit>
#include <QMessageBox>
SetDelay::SetDelay(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::SetDelay)
{
    ui->setupUi(this);
 
}
 
SetDelay::~SetDelay()
{
    delete ui;
}
 
 
 
void SetDelay::on_pushButton_clicked()
{
   bool ok;
   delayms = ui->lineEdit->text();
   int val = delayms.toInt(&ok);
   if (ok)
   {
       QMessageBox::critical(this,tr("Delay error"), "Set valid delay");
   }
   ui->lineEdit->setText(delayms);
   hide();
}
setdelay.h
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef SETDELAY_H
#define SETDELAY_H
 
#include <QDialog>
 
namespace Ui {
class SetDelay;
}
 
class SetDelay : public QDialog
{
    Q_OBJECT
private:
    QString delayms;
public slots:
    void on_pushButton_clicked();
 
public:
    explicit SetDelay(QWidget *parent = 0);
    ~SetDelay();
 
 
private:
    Ui::SetDelay *ui;
};
 
#endif // SETDELAY_H
0
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
05.11.2013, 20:20
Здравствуйте!
Нужно сделать ваш параметр
глобально видимым всеми др.
Обявите его в вашем классе
главного окна в MainWindow...
и подставляйте в любой вновь
создаваемый диалог уже это -
предыдущее значение. У окон
диалога есть метод акцепт, с
которого можно себе в главное
окно всё взять и в нём хранить!
1
1 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 11
06.11.2013, 15:21  [ТС]
а можно чуть подробнее? Я думал, что если я в классе диалогового окна объявляю переменную public то я увижу ее в другом классе при вызове. Пробовал аналогично делать метод доступа к этой переменной и тоже делал его public. Но результата ноль.
в файле реализации класса mainWindow я вызываю эту переменную так:
C++ (Qt)
1
2
delay = new SetDelay;
QString str = delay->SetDelay::delayms
0
136 / 140 / 7
Регистрация: 22.08.2011
Сообщений: 485
09.11.2013, 12:44
... праздники

...Да так и есть, но объявленные внутри
методов класса перменные, там и живут.
Достаточно вам посмотреть на 35 строку
в файлах mainwindow H,CPP (совпадение)!

Я вам не хочу ничего советовать, но напишу,
как когда-то делал я. Диалог я создавал в
конструкторе раз и навсегда через new и не
удалял до тех пор пока прога работает...

ОТ БАЛДЫ ПРИМЕРНО ТАК:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// Начнём с класса головного окна...
// Примерно в конструкторе такое (в хедере уже есть
// глобальная переменная int и заявлен DLG_W *DLG,
// а также заявлен сигнал sg_send её взводить и слот
// sl_GIVE, дающий доступ к вашим всем данным в DLG) :
int_M_GLOBAL=666; //первичная инициализация для магии
DLG=new DLG_W(this);  // this == "mainwindow"
DLG->setModal(true);    // если руками не указали...
QObject::connect(this,SIGNAL(sg_send(int)),DLG,SLOT(sl_SET(int))); 
QObject::connect(DLG,SIGNAL(accepted()),this,SLOT(sl_GIVE()));
...
// Открывать диалог так:
DLG->show();
emit sg_send(int_M_GLOBAL); // Сразу и закинем
...
// В слоте sl_GIVE по закрытию запомним новое:
int_M_GLOBAL=DLG->int_D_GLOBAL;
...
//___________________________вроде с главным классом окна всё
 
// Переходим к диалогу...
// Обработчик для слота sl_SET(int G) :
int_D_GLOBAL=G;  // взводим её и в классе-диалоге
ui->LineEdit->SetText(QString::number(int_D_GLOBAL));
...
//Обработчик on_clik для кнопки по нажатию:
int_D_GLOBAL= (ui->LineEdit->text()).ToInt() // как-то так, нужно ещё и проверить
this->accept(); // диалог по этой команде скроется сам и активирует слот sl_GIVE()
..____________________________вроде и с диалогом всё.
Ошибки есть, но, думаю суть понятна... Удачи!!!
1
1 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 11
09.11.2013, 23:33  [ТС]
Спасибо за ответ! Но я нашел решение. Мне это показалось странным в силу неопытности. В общем, когда я хотел описать событие при нажатии на кнопку (чтобы появилось окно) я нажимал на кнопке правой клавишей и выбирал "Перейти к слоту". Создавался метод
C++ (Qt)
1
void on_actionSet_delay_triggered();
Однако я решил сделать через сигналы и слоты, дабы привести к единому виду свою писанину и добавил к методу инициализации коннектов
C++ (Qt)
1
connect(ui->actionSet_delay, SIGNAL(triggered()),delay,SLOT(show()));
и все заработало)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2013, 23:33
Помогаю со студенческими работами здесь

Сохранить картинку на форме
Имеется ввиду, что при открытии картинка уже находится на форме. Жду помощи

Сохранить значение строки до того, как она получит значение null
Есть ли возможность сохранить значение строки, до того как она получит значение null? Просто после нажатия одной кнопки значение...

Найти минимальное значение X но при этом вывести и сохранить Значение Y соответствующие значению X
Прошу помочь. Есть двумерный массив С=. Необходимо найти минимальное значение X но при этом вывести и сохранить Значение Y соответствующие...

Как сохранить картинку на форме
Значит так: Имеется форма, на которой расположен компонент Image, OpenDialogPicture и произвольная кнопка для загрузки картинки на форму....

Как сохранить настройки на форме?
В приложении на форме могу изменять размеры DataGridView с помощью полосок Split и ширину колонок. Как сохранить сделанные изменения, чтобы...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru