Название: как сделать несколько диалоговых окон в приложении Отправлено: savigm от Январь 09, 2010, 18:09 Подскажите пожалуйста: как в kdevelop сделать несколько диалоговых окон, чтобы в начале запускалось первое, по нажатию кнопки появилось второе окно, первое при этом закрылось, по нажатию кнопки во втором окне чтобы переключались опять в первое, а второе при этом закрылось?
Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 09, 2010, 20:14 Я как раз хотел создать похожую тему, только у меня проблемы при добавлении новой формы в Visual Studio 2005. При помощи QTCreator создаю вторую форму, по сути создаю проект, он мне генерит все нужные классы к этой форме. Затем беру .ui .cpp и .h и копирую в папку с проектом для Studio. Затем в самой студии добавляю эти файлы в проект, затем нужно настроить проперти для нового ui файла, копируем все настройки со старой формы. Если после этого запустить апликэйшен то получю несколько ошибок, одна из них
unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Preview::metaObject(void)const " (?metaObject@Preview@@UBEPBUQMetaObject@@XZ) думаю, что эта ошибка из-за того, что для моей новой добавленной формы не генерируется moc файл. Если просмотреть *.vcproj то увидим что для новой формы не прописаны настройки moc. А для старой формы они есть. Можно попробывать в самом файле добавить их, но не хотелось бы править файл руками. Ведь должно же где-то в настройках студии это задаваться. Но где? А может есть способ по проще добавления новой формы для студии? Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Hellraiser от Январь 09, 2010, 20:35 Цитировать А может есть способ по проще добавления новой формы для студии? Надо поставить интегратор для студии - для версии 4.6.0 (http://get.qt.nokia.com/vsaddin/qt-vs-addin-1.1.2.exe) или для версии 4.5.3 (http://get.qt.nokia.com/vsaddin/qt-vs-addin-1.1.1.exe). Для студии версии Express этот вариант не подходит - она не поддерживает аддоны. Хотя в свое время для Qt3 решал эту проблему с помощью своих Custom Build Rules.Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: savigm от Январь 09, 2010, 20:43 я примерно разобрался, но проблема в следующем:
1. по нажатию кнопки в первом окне создаю объект класса второго окна, отображаю его и скрываю первое окно: Код: SecondDlg *seconddlg = new SecondDlg; Код: firstDlg->show(); show не отображает первое окно вновь, не знаю как закрыть второе окно по нажатию кнопки??? Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 09, 2010, 20:46 2Hellraiser
интегратор для 4.6.0 я уже поставил, но встал криво. Нет дополнительного пункта меню QT, хотя QT проект создать можно. Попробую поставить для 4.5.3. Отвечу на свой вопрос(без интегратора) qmake -project (обновили .pro с учётом новых файлов) qmake -tp -vc (обновили .vcproj) и новая форма добавлена в проект корректно. Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: zenden от Январь 10, 2010, 12:02 а интегратор для qt 4.6.0 поддерживает редактирование виджетов прямо внутри окна Visual Studio?
Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Hellraiser от Январь 10, 2010, 12:56 Только для обладателей коммерческой версии. Бесплатный только вызывает стандартный дизайнер.
Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 10, 2010, 20:37 Если в главном окне создать вторую форму, то что бы во второй форме получить доступ к контролам первой формы, нужно через отдельный метод или через конструктор передать главное окно?
Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Авварон от Январь 10, 2010, 21:12 можно и так, но это плохой стиль.
Лучше, если главная форма сама достанет что ей надо, из дочернего класса Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 10, 2010, 21:29 Пользователь нажал на кнопку на второй форме и мне нужно вызвать метод из первой формы. Не предстовляю как ещё это можно сделать, как не передать MainWindow второй форме. Плохая архитектура приложения?
Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: BRE от Январь 10, 2010, 21:32 Пользователь нажал на кнопку на второй форме и мне нужно вызвать метод из первой формы. Не предстовляю как ещё это можно сделать, как не передать MainWindow второй форме. Плохая архитектура приложения? Не вдаваясь в обсуждения архитектуры....В первой форме сделать слот и соединить сигнал от кнопки на второй форме с этим слотом. Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 10, 2010, 21:42 Цитировать В первой форме сделать слот и соединить сигнал от кнопки на второй форме с этим слотом. у меня была такая идея, но её сразу откинул, т.к. не знал как такое сделать для кнопок находящихся на разных формах. Не будет ли маленького примера?Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 10, 2010, 21:54 а ну всё кажется понял
connect(mPreviewForm->ui->stopRecording, SIGNAL(clicked()), this, SLOT(on_startButton_clicked())); только мне пришлось паблик сделать ui. Или это тоже плохой стиль программирования? Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Hellraiser от Январь 10, 2010, 21:56 Если взять за основу код из предыдущих постов, то примерно так (чтобы не делать элементы интерфейса пабликом):
Код: SecondDlg *seconddlg = new SecondDlg; Код: connect(myButton, SIGNAL(clicked()), this, SIGNAL(buttonPressed())); Название: Re: как сделать несколько диалоговых окон в приложении Отправлено: Awejk от Январь 10, 2010, 22:03 2Hellraiser
интересная цепочка получилась, хоть не надо будет паблик делать. Спасибо. |