![]() |
|
![]() ![]() ![]() |
|
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Начинаю изучать QT. Есть задание: создать 2 произвольных *.ui файла, т.е. две формы. В каждой из них расположить по кнопке, при нажатию на которую происходит переход к другой форме. Т.е. из первой формы можно вызвать вторую,а из второй первую.
Проблема пока даже не в том , чтобы создать или вызвать форму,а в том, чтобы подключить к проекту. Т.е. я создала проет, там у меня уже есть одна форма (класс Widget), добавляю вторую форму, но добавляется только *.ui файл, никакого хедера и исходника не вижу для второй формы. Как правильно добавить вторую форму в проект и как их связать? Если даже при попытке обработки события clicked() по кнопке на второй форме, мне пишет, что не удалось найти документы соответствующие "ui_form.h". Можно пошагово объяснить как это сделать? Единственное, что я поняла, это надо объявить переменную типа этой формы и для вызова формы написать вот так: f2 = new form(this); this->hide(); f2->show(); |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Уже нашла ответ на свой вопрос: казывается при добавлении формы в проект, надо выбирать не просто форму,а класс формы
|
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
Нет, всё таки не до конца решила проблему: из первой формы я могу вызвать вторую и даже могу скрыть первую:
но как теперь из второй формы снова вызвать первую и при этом закрыть вторую? Т.е. мне надо переключать интерфейс с формы 1 на форму 2 и обратно |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Создай свой класс Application:
то же самое можно сделать в MainWindow Это сообщение отредактировал(а) math64 - 10.6.2013, 11:34 |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
math64, спасибо конечно, но еще бы знать как создавать свой класс и самое главное где
![]() Должно быть как то проще всё, т.к. это задание по первому дню курсов, мне дали видео с этого курса. там объяснялось только как вызвать диалог из формы и я так понимаю,что задание надо выполнить основываясь на то,что объясняли. Про создание класса там не было ничего. С другой стороны узнать как создается класс - мне совсем не помешает |
|||
|
||||
ilyuha |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
Aline, Ну, например, можно в классе второй формы определить сигнал:
Испускать его при закрытии:
Ловить в первой форме:
И обрабатываете как хотите в onForm2Closed() |
||||||
|
|||||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Проще - делай мой код в MainWindow. Как создавать класс формы, как я понял, ты научилась.
ЗЫ: form1->ui по умочанию в секции private. Поэтому нужно либо объявить MainWindow другом, либо добавить в Form1 метод getButton1() (лучший вариант), либо перенести connect() кнопки со слотом в конструктор Form1. В этом случае тип parent для Form1 нужно поменять на MainWindow, чтобы получить доступ к слоту. Это сообщение отредактировал(а) math64 - 10.6.2013, 12:25 |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
что то я окончательно во всем запуталась, надо делать всё сначала и постепенно
![]() |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
1. В главной форме две кнопки - button1 и button2, открывающие Form1 и Form2 соответственно. При повтоном нажатии открывается форма, созданная в первый раз. Для этого создаются поля form1 и form2. Для Form1 и Form2 задается родителем MainWindow, поэтому они будут удалены автоматически при закрытии MainWindow.
2. В Form1 при нажатии на button1 нужно открыть Form2. Для этого нужно соединить её со слотом главной формы. Если это сделать в своём слоте, формы будут множится (хотя и видна буден только одна из них). 3. Аналогично для кнопки в Form2. Или я не правильно понял задачу? Добавлено @ 14:01 Вот так можно делать connect() сигнала кнопки в диалоге со слотом главного окна, если не понятно:
Это сообщение отредактировал(а) math64 - 10.6.2013, 14:03 |
|||
|
||||
ilyuha |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 111 Регистрация: 10.7.2007 Репутация: нет Всего: нет |
math64, Как я понял, на каждой форме по одной кнопке, каждая из которых должна скрывать текущую форму и открвать другую.
Поэтому, я и предложил тупо ловить сигнал закрытия второй формы |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Если главной формы нет, тогда
(коды методов нужно вынести в cpp файл, объявления классов о отдельные h файлы) |
|||
|
||||
Aline |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 470 Регистрация: 22.7.2005 Где: Таруса Репутация: нет Всего: нет |
math64, да, главной формы вроде нет, задание звучит так, что формы по нажатию на кнопку должны переключаться между собой.
Вот здесь можно посмотреть задание: http://www.zmartzoft.ru/projects/qtincepti.../hometask_1.pdf Задание №5 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |