98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 430
|
|||||||||||
1 | |||||||||||
Доступ к GUI из другого класса. Работает странно22.04.2017, 01:41. Показов 2178. Ответов 5
Метки нет (Все метки)
Приветствую.
Есть графический интерфейс, с формой page.ui. На ней есть например виджет Label. в page.h добавил
Не по теме: И вообще-то мне не сильно нравится такой способ взаимодействия с формой из другого класса, так как тут хорошо, параметр всего один, а дальше мне надо будет целую вкладку заполнить, параметров дофига. То есть или функция мудреная или JSON объект передавать.
0
|
22.04.2017, 01:41 | |
Ответы с готовыми решениями:
5
Доступ к GUI из метода другого класса запущенного в фоновом потоке Не работает доступ к контролу из другого класса Странно работает Win32::GUI::MessageBox Доступ к SWT GUI из другого потока |
22.04.2017, 08:34 | 2 |
ui->Label - вместо Label надо было писать имя элемента(Label - это класс).
this->close() - без контекста трудно понять, что вы тут делаете, но возможно надо было "скрывать"(hide), а не "закрывать"(close)?
0
|
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 430
|
|
24.04.2017, 06:08 [ТС] | 3 |
Понимаю. я использовал имя StatusLabel. все равно никаких изменений. текст не меняется. те же самые команды, внутри слота (функции) нажатия кнопки выполняются на ура. временно забудем про this->close(), оставим только изменение текста в виджете. что не так то?
Может дело в том, что пытаюсь менять что то в экранной фформе из другого класса. иного объяснения столь выборочной работе не вижу.
0
|
716 / 676 / 110
Регистрация: 29.05.2015
Сообщений: 4,079
|
|
24.04.2017, 07:52 | 4 |
Может в другом классе нужно генерировать сигнал (emit) и связать его со слотом? Связь между формами с помощью "сигнал-слот" работает. И эта ваша функция "void page::autorized (QString Parameter)" должна быть объявлена как слот.
0
|
98 / 10 / 0
Регистрация: 21.02.2011
Сообщений: 430
|
||||||||||||||||||||||||||
27.04.2017, 04:47 [ТС] | 5 | |||||||||||||||||||||||||
Приветствую.
Не пойму. Куда надо connect прописать чтобы соединить сигнал (Где его объявить?) со слотом. Вот подробности и приложении: main.cpp при запуске начинаю слушать определенный порт
.h...
Etu fignu pofiksil, vizvav funkciu iz LoginPage, kotoraya vernula mne strukturu s IP, Portom. Vse Ok. Ostalos razobratsa kak menat parametri v forme iz drugih klassov. Podskajite Не по теме: Prostite za translit. Net na etoi mashine russkogo yazika
0
|
184 / 176 / 57
Регистрация: 25.09.2014
Сообщений: 834
|
||||||
27.04.2017, 16:32 | 6 | |||||
Во-первых. Перестаньте все писать с большой буквы. С большой буквы только имена классов. Объекты классов, имена переменных и названия функций - пишите с маленькой.
Так, как вы написали, по идее тоже должно работать. Слот - это обычная функция. И ее тоже можно вызывать напрямую из нужного объекта. Дебагером пробегались? Точно попадаете в функцию? Добавлено через 8 минут Все, разобрался с вашим трудночитаемым кодом. В функции main вы создаете два объекта - сначала Sample, затем loginPage. Второй - показываете. При этом внутри Sample вы создаете ЕЩЕ ОДИН новый (через new) объект loginPage. Его не показываете. И именно у него вызываете фукнцию-слот. В нем все работает, да. Но в первом, показанном объекте вы ничего не увидите. Вам в мейне надо создать сначала логинФорму. Затем по указателю передать ее в конструктор Sampla. Но есть еще более простой вариант. Прямо в мейне соединись их. Но для этого нужно в Sample добавить сигнал. И затем уже в мейне сделать что-то вроде:
1
|
27.04.2017, 16:32 | |
27.04.2017, 16:32 | |
Помогаю со студенческими работами здесь
6
Разрешить доступ к методу класса только для другого класса MFC, доступ к элементу класса (StatusBar) из другого класса Доступ к полям класса через переменные другого класса Доступ к свойствам экземпляра класса из другого класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |