Название: вызов второй формы Отправлено: lexflax от Декабря 30, 2013, 03:55 Доброго времени суток.
Я новичек в qt, решил изучить работу с формами... создал проэкт Gui , веделил проэкт и вызвал на нем контекстное меню чтоб добавить новую форму "Добавить новый->qt-> форма qt designer. Появилась вторая форма с именем mainwindow2.ui, хочу вызвать ее после нажатия кнопки расположенной на первой форме... как это можно сделать? Название: Re: вызов второй формы Отправлено: kambala от Декабря 30, 2013, 13:11 тебе еще нужен класс, «подкрепляющий» новую форму. проще всего это сделать, добавив GUI класс, иначе сейчас тебе придется самому связывать форму с классом.
потом в обработчике кнопки пишешь например Код
вообще лучше читай книжку или хотя бы туториалы в документации — методом тыка разбираться будет ой как непросто. Название: Re: вызов второй формы Отправлено: lexflax от Декабря 30, 2013, 16:24 добавил форму выбрав графу "класс формы qt widget"
содежимое form.h Код: #ifndef FORM_H Содержимое mainwindow.cpp Код: #include "mainwindow.h" Название: Re: вызов второй формы Отправлено: lexflax от Декабря 30, 2013, 16:38 добавил две строчки
Код: #include "ui_form.h" Название: Re: вызов второй формы Отправлено: lexflax от Декабря 30, 2013, 16:43 а как можно настроить чтоб форма выходила допустим в разных местах экрана какой укажем в настройках, и с определенным размером, есть код где можно такие настройки прописать?
Название: Re: вызов второй формы Отправлено: Alex Custov от Декабря 30, 2013, 16:50 Методы move() и resize() в QWidget
Название: Re: вызов второй формы Отправлено: lexflax от Декабря 31, 2013, 03:18 еще вопрос подскажите пожалуйста, вторая форма вызывается...
После нажатия кнопки надо чтоб форма закрывалась и пользователь снова видел основное меню Название: Re: вызов второй формы Отправлено: lexflax от Декабря 31, 2013, 03:25 Добавил такую строчку и форма стала закрыватся и возвращатся к основной
Код: this->hide(); Название: Re: вызов второй формы Отправлено: kambala от Декабря 31, 2013, 12:22 название метода как бы говорит нам, что форма просто прячется, а не закрывается. для закрытия есть метод close().
открой-ка справку по QWidget и почитай какие есть методы у него. Название: Re: вызов второй формы Отправлено: lexflax от Января 01, 2014, 15:12 kambala, спасибо что всегда отвечаете, редко на форумах встречается...
hide на close заменил, теперь немного другая задача, при вызове новой формы надо чтоб старая форма на время работы в новой блокировалась, не подскажите как это сделать? пытался скрыть ее просто, но даже скрыть не получилось, а вообще нужна именно блокировка формы на любые действия... Название: Re: вызов второй формы Отправлено: lexflax от Января 01, 2014, 15:14 а скрыть пытался так, новую форму показать , основную скрыть
Код: void MainWindow::on_action_activated() Название: Re: вызов второй формы Отправлено: lexflax от Января 02, 2014, 06:31 Блокрую так форму после вызова второй формыКод C++ (QT)
void MainWindow::on_action_activated() Код: { Но проблема разблокировать теперь ее после закрытия формы Form. в файле form.cpp прописать Код C++ (QT) Код: this->setEnabled(true); Нельзя, так как эту команду она отнесет не к первой форме mainwindow а к форме form, а форма mainwindow так и останется заблокированной((( как можно обратно после закрытия формы ее разблокировать? Название: Re: вызов второй формы Отправлено: Bepec от Января 02, 2014, 13:29 Вот тут уже начинается необходимость в системе сигнал-слотов или диалогов.
Самый простой выход - не блокировать основную форму так как вы, а просто делать дочернее окно модальным Код: setWindowModality ( Qt::WindowModality windowModality ) Или же создать сигнал у дочерней формы и связать его со слотом материнской :) Или же использовать форму, наследованную от диалога. Название: Re: вызов второй формы Отправлено: lexflax от Января 02, 2014, 14:19 Да, форма наследованная от Диалого стала хорошим выходом из ситуации
И вызов формы стал таким Код: Form *w = new Form ; |