![]() |
|
|
![]()
|
|
| brom |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.7.2007 Где: Таганрог, Россия Репутация: нет Всего: нет |
Всем доброго времени суток !
есть проблема: приложение (пишется на qt.4.2.3) имеет 2 формы; обе изначально писались в Designer; первую запускаю их main
FormMu1 описано так
и это работает. Но при попытке так же вызвать вторую форму выдается ошибка: переменные argc, argv не определены. В книге нашел "обрезаный вызов":
в этом случае форма показывается, но не остается на долго (показалась и закрылась). Подскажите, пожалуйста, что я делаю не так. |
||||||
|
|||||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 97 |
brom, а можно весь код? Ведь ты даже инициализацию (конструктор) окон не показал.
Где "уинизирование" твоего виджета созданным в designer ui? |
|||
|
||||
| powerfox |
|
||||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 97 |
form1.h:
form1.cpp:
main.cpp:
Ui::Form1 у меня QWidget. Ui::Form2 - QDialog. |
||||||
|
|||||||
| brom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.7.2007 Где: Таганрог, Россия Репутация: нет Всего: нет |
работает. спасибо! а кто удаляет form2 ? Утечки памяти не будет ? Добавлено через 5 минут и 12 секунд и еще 2 вопросика: 1) Как сделать, чтобы form2 было модальным ? 2) Если я после 13 строки записываю еще что то, то оно выполняется до открытия формы2, а как сделать что бы после ее закрытия ? заранее спасибо Это сообщение отредактировал(а) brom - 24.7.2007, 15:16 |
|||
|
||||
| powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 97 |
Никто. Я по привычке сделал в виде указателся. Самое лучшее в данном лучае прописать form2 в стэк. Ещё 1 способ смотри ниже. Во-первых, можно указать при проектировании в Designer (в свойствах объекта QDialog). (+ смотри новый код).
Если нужно проверить, что нажал пользователь (Ok или cancel), то можно использовать QDialog::exec(). То есть код будет приблизительно такой: form1.cpp
|
||||
|
|||||
| brom |
|
||||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.7.2007 Где: Таганрог, Россия Репутация: нет Всего: нет |
я не использую преобразование ui-файла в СИшный, я его непосредственно использую:
и мне помпилятор маты выдает:
как быть ? Это сообщение отредактировал(а) brom - 24.7.2007, 16:45 |
||||||||
|
|||||||||
| powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 97 |
brom, пожалуйста, не цитируй весь код (всё сообщение). Очень тяжело тему читать.
Вся разница будет только в том, что может потребоваться найти нужные виджеты (в твоём случае кнопка) и, если есть пользовательские слоты, приконнектить их специальным вызовом. Хороший пример: /usr/share/doc/qt4-doc/html/designer-calculatorbuilder.html (там без открытия форм).
Покажи весь код, в том, что ты привёл такого класса вообще нет. |
||||
|
|||||
| brom |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.7.2007 Где: Таганрог, Россия Репутация: нет Всего: нет |
main.cpp
tests.cpp
tests.h
test2.cpp
test2.h
пока упрощал код, что бы показать, мне кажется, я понял почему ошибка: у меня не QDialog , а QWidget, для которого нет вызова exec(). Но попробовал переделать все под Dialog - не видит моей формы, а генерит свою, чистую. :( "ничего не понимаю", как сказали бы братья пилоты. |
||||||||||
|
|||||||||||
| brom |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 24.7.2007 Где: Таганрог, Россия Репутация: нет Всего: нет |
у меня такое ощущение, что не показывается моя форма , т.к. в test2.cpp в 11 строке я не меняю QWidget на QDialog, т.к. функция load() возвращает тип QWidget.
Может его нужно приобразовать ? или есть что-то подобное , что возвращает QDialog ? |
|||
|
||||
| powerfox |
|
||||||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 4 Всего: 97 |
Если кинешь весь проект, то смогу поковырять (с ui файлами и полными исходниками). Я Qt4 люблю.
Из того, что я у тебя посмотрел: 1.
Коннектим сигнал ui-го виджета к нашему слоту. Но нигде нет вызова:
2. По идее, раз QWidget является базовым классом для QDialog, то вполне можно присвоить QDialog объект QWidget. Преобразовывать ничего не надо. 2*.
|
||||||||
|
|||||||||
| ZurZur |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 27.2.2013 Репутация: нет Всего: 0 |
Добрый день!
Наконец-то смог писать на форум: никак не мог зарегестрировать. Мне очень интересен этот topic. Я сам никогда раньше на qt не программировал, хотя на С писал довольно много. В основном на Builder. Так вот, решил в качестве обучения попробовать перенести некоторые старые программы на qt. Споткнулся уже вначале: никак не могу создать казалось бы элементарный проект с двумя формами. Идея совсем проста: по нажатию кнопки на одной форме появляется другая. Знаю, что должно реализоваться как-то совсем просто, в builder на это ушло бы меньше минуты работы. Не могли бы Вы мне помочь? В идеале расписать подробно, как добавляется вторая форма. Тему прочитал много раз, но мне это не помогло. |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |