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

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

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

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

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

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

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

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

5
1 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 11
02.11.2013, 17:45  [ТС] 2
Изначально делал так, но значения не сохранялись(( Видимо объек уничтожается и сохранения не происходит. Не могу додуматься.
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 3
Здравствуйте!
Нужно сделать ваш параметр
глобально видимым всеми др.
Обявите его в вашем классе
главного окна в MainWindow...
и подставляйте в любой вновь
создаваемый диалог уже это -
предыдущее значение. У окон
диалога есть метод акцепт, с
которого можно себе в главное
окно всё взять и в нём хранить!
1
1 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 11
06.11.2013, 15:21  [ТС] 4
а можно чуть подробнее? Я думал, что если я в классе диалогового окна объявляю переменную 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 5
... праздники

...Да так и есть, но объявленные внутри
методов класса перменные, там и живут.
Достаточно вам посмотреть на 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  [ТС] 6
Спасибо за ответ! Но я нашел решение. Мне это показалось странным в силу неопытности. В общем, когда я хотел описать событие при нажатии на кнопку (чтобы появилось окно) я нажимал на кнопке правой клавишей и выбирал "Перейти к слоту". Создавался метод
C++ (Qt)
1
void on_actionSet_delay_triggered();
Однако я решил сделать через сигналы и слоты, дабы привести к единому виду свою писанину и добавил к методу инициализации коннектов
C++ (Qt)
1
connect(ui->actionSet_delay, SIGNAL(triggered()),delay,SLOT(show()));
и все заработало)))
0
09.11.2013, 23:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2013, 23:33
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru