0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|||||||||||
1 | |||||||||||
Как вызвать функцию в Qt с переменной, которая берется из другой формы?24.10.2017, 15:33. Показов 6573. Ответов 17
Есть две формы (firstForm и MainWindow). В firstForm присутствует SpinBOX, из которого мне нужно брать значение, что задает пользователь. Затем это значение нужно передать в форму MainWindow и при помощи switch выводить соответствующие элементы. Проблема в том, что во время объявления функции и передачи в нее значение, оно становится начальным каждый раз( т.е. вызывает функцию заново).
Как это исправить? Как заставить брать нужное значение? firstForm
0
|
24.10.2017, 15:33 | |
Ответы с готовыми решениями:
17
Как вызвать функцию из одной формы на другой? Как правильно вызвать функцию из другой формы Вызвать функцию из другой формы как вызвать процедуру из другой формы |
68 / 68 / 17
Регистрация: 20.01.2015
Сообщений: 347
|
|
24.10.2017, 15:53 | 2 |
Прочитайте про сигналы и слоты.
Сигнал void QSpinBox::valueChanged(int i) связать со слотом обработчиком, который будет писать во 2 форму.
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 20:14 [ТС] | 3 |
Вы наверно не совсем поняли. Мне не нужно каждый раз менять значение в SpinBox. Я его беру всего один раз, когда пользователь выбирает необходимое ему значение и нажимает кнопку "Ок". После этого форма firstForm закрывается и не используется в дальнейшем. Мне кажется, здесь не нужны сигналы и слоты.
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 20:44 | 4 |
Что это за поделка? В 12-13 ты повторно главное окно создаёшь, что ли?
Какое окно у тебя первично? Если MainWindow, то тогда вызывай второе как модальный диалог, и если пользователь не выбрал отмену, считывай значение.
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 21:34 [ТС] | 5 |
Я не создаю повторно главное окно, я вызываю его по нажатию кнопки ОК. Сначала я вызываю окно firstForm, нажимаю ОК. Окно закрывается и сразу появляется окно MainWindow.
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 21:43 | 6 |
Тогда в on_pushButton_clicked() обращайся к тому экземпляру, который отображался.
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 21:46 [ТС] | 7 |
Но мне нужно к нему обратиться после нажатия кнопки на форме MainWindow
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 21:49 | 8 |
Ты сам не запутался? В какой последовательности окна создаются и отображаются?
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 22:01 [ТС] | 9 |
Сначала создается и отображается firstForm, затем по нажатию кнопки ОК открывается MainWindow
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 22:04 | 10 |
MainWindow::on_pushButton_clicked() после вызывается? Она должна работать с исходным firstForm, а не с локальным. Я уже писал.
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 22:07 [ТС] | 11 |
Я не совсем понимаю, что вы пишите. Можно немного подробнее? Что мне стоит изменить?
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 22:20 | 12 |
4-ю строку убрать. И обращаться по указателю к исходному firstForm.
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 22:26 [ТС] | 13 |
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 22:37 | 14 |
Да почему так? Ничего не надо создавать. Ты же уже создал экземпляр, который первым отображается. Вот его указатель и используй.
Добавлено через 1 минуту Или может, тебе проще сделать параметр в конструкторе MainWindow и туда сразу передать?
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 22:44 [ТС] | 15 |
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
|
24.10.2017, 22:46 | 16 |
Ну используй её. Тогда она должна быть public.
0
|
0 / 0 / 0
Регистрация: 03.06.2015
Сообщений: 23
|
|
24.10.2017, 22:54 [ТС] | 17 |
Она и есть public. Вся ошибка моей программы в том, что я вызываю функцию считывания значения из спинбокса повторно, и оно мне считывает значение по умолчанию(т.е. самое первое). А мне нужно, чтобы оно считало то, что выбрал пользователь
0
|
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
|
||||||
24.10.2017, 23:39 | 18 | |||||
0
|
24.10.2017, 23:39 | |
24.10.2017, 23:39 | |
Помогаю со студенческими работами здесь
18
Как вызвать значение переменной в другую функцию Как вызвать одну функцию из другой? Как вызвать ZQuery компонент из другой формы Как вызвать функцию pictureBox1_Paint_1() из другой функции? Как вызвать форму по нажатию кнопки с другой формы? Как вызвать процедуру из MDI child из другой формы? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |