![]() |
|
|
![]()
|
|
| KPEHDEL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Здравствуйте. Только начал изучать QT. В качестве IDE использую VS2008 + Qt Designer.
В Qt Designer расположил QstackedWidget и создал две страницы по label на каждой. На форме приложения под QstackedWidget, есть кнопка, при нажатии на которую должна отображаться вторая страница QstackedWidget. ВСЕ виджеты объявлены в методе setupUi в файле ui_name_projact.h. Остальные файлы: main.cpp name_projact.cpp - файл с описанием методов проекта. name_projact.h - файл с описанием класса проекта. Обычная структура сгенерированного проекта. Не пойму как лучше и правильнее в плане архитектуры кода, сделать открытие следующей страницы QstackedWidget при нажатии на кнопку. В void setupUi(QMainWindow *Electronic_elections_users_clientClass), есть задание индекса страницы stackedWidget->setCurrentIndex(1); Принимать у setupUi ещё один параметр типа int, с индексом страницы и подставлять эту переменную в stackedWidget->setCurrentIndex(); И при нажатии на кнопку сделать: connect(pushButton, SIGNAL(clicked()), stackedWidget, SLOT(app.handler_page())); Где handler_page() метод приложения, который вызывает setupUi и передаёт новый индекс страницы? Но тут опять же делема, как обратиться к методу приложения, учитывая, что нажатие кнопки прописано в ui_name_projact.h который подключен в name_projact.h, следовательно метод не будет найден, будет за областью видимости. Если работать в Qt Designer, то он всё связанное с интерфейсом располагается в одном методе setupUi. Стоит ли в ручную разбивать на отдельные методы, допустим для каждой страницы приложения? В общем, объясните пожалуйста, как делают нормальные люди переключение страниц виджета. И ещё вопрос, почему если в SLOT() я напишу что-угодно, не выдаст ошибки? Заранее спасибо. С нетерпением жду ответа. |
|||
|
||||
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
QT == QuickTime Qt == Кроссплатформенная библиотека не проекта (у проекта, обычно, нет методов), а основной формы (или основного окна) приложения
это нужно делать не при нажатии на кнопку, а в конструкторе окна:
файл ui_name_projact.h вообще нет смысла менять, т.к. он генерится каждый раз при любом изменении формы в дизайнере, и все твои изменения затрутся.
Потому, что связывания сигнала и слота происходит динамически по имени функции. Почитай про moc-компиляцию. Кстати, при невозможности соединить сигнал со слотом ф-ция connect сообщает об этом 1) в возвращаемом значении (false) 2) в окошке Output студии -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| KPEHDEL |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 138 Регистрация: 31.3.2010 Репутация: нет Всего: нет |
Спасибо. Стало яснее, разобрался.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, 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. |