![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
guest13 |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 9.10.2008 Пользователь №: 386 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Имеется 2 виджета. Необходимо реализовать такую ситуацию - при запуске программы появляется только 1 виджет, а второй запускается только после нажатия кнопки на 1-м виджете.
набросал вот такой код (просто запускается 2 виджета, на обоих имеются кнопки, которые закрывают программу (quit())). Раскрывающийся текст
прошу помощи. ![]() |
|
|
![]() |
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
для начала, вынеси виджеты в отдельные пары файлов (h/cpp), будем считать, что в дальнейшем они могут сильно отличатся (хотя сейчас их лучше обеденить в один и сделать функции для установки нужных параметров).
Затем connect(q1, SIGNAL(clicked()), w2, SLOT(show())); насчет соеденить сигнал clicked со слотом show правильная, но видимо ты это решил проделать внутри виджета w1 (MyWid1), который ничего не знает о виджете w2 (MyWid2). при этом компилер (GCC, например) небудет ругатся, т.к. сигнально-слотовыми вещами занимается MOC (метаобъектный компилятор), а он будет ругатся в рантайме, но в консоль ошибок.Дабы ты научился ловить такие ошибки, добавь в pro-файл такую строку: CONFIG +=console при запуске приложения у тебя появится консоль в которой будут сообщения об ошибках соединений сигналов и слотов. обе кнопки закрывают приложение qApp.... хм, ну видимо тебе повезло, что ты своих сигналов/слотов не создавал.(только что ещё разок проверил) вобщем логика: создал виджет 1 создал виджет 2 соеденил сигнал 1-го со слотом 2-го показал 1-ый запустил цикл событий приложения (соображай где все эти действия нужно проделать!) теперь электричество: нажал кнопку на 1-ом, пошел сигнал, т.к. соединен со слотом, сработал слот, отобразился второй виджет. |
|
|
guest13 |
![]()
Сообщение
#3
|
Студент ![]() Группа: Новичок Сообщений: 13 Регистрация: 9.10.2008 Пользователь №: 386 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
таак-с...
для начала, вынеси виджеты в отдельные пары файлов (h/cpp), будем считать, что в дальнейшем они могут сильно отличатся (хотя сейчас их лучше обеденить в один и сделать функции для установки нужных параметров). сначала буду с этим разбираться.... пока не очень ясна для меня картина создания виджетов в паре файлов... но тут в Учебном пособии, вроде разжеванна эта процедура обе кнопки закрывают приложение qApp.... хм, ну видимо тебе повезло, что ты своих сигналов/слотов не создавал.(только что ещё разок проверил) хм-м...можно тогда пояснить, почему мне повезло и так не нужно делать? эту конструкцию я взял из Учебного Пособия... вобщем логика: создал виджет 1 создал виджет 2 соеденил сигнал 1-го со слотом 2-го показал 1-ый запустил цикл событий приложения (соображай где все эти действия нужно проделать!) теперь электричество: нажал кнопку на 1-ом, пошел сигнал, т.к. соединен со слотом, сработал слот, отобразился второй виджет. не очень уловил про "цикл событий приложения" по поводу того, где это надо проделывать.... виджеты описать в отдельных файлах, затем в h-файлах связать сигналы. затем в main создать оба виджета и показать только 1-й.... так? ![]()
Причина редактирования: не дави дважды кнопку "отправить"!
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 12.7.2025, 15:08 |