![]() |
|
![]() ![]() ![]() |
|
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 2 Всего: 40 |
Как добавить несколько форм в QStackedLayout без создания для каждого из них наследуемого класса(то есть использовав только сгенерированные uic классы)?
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
А чем QStackedLayout::addWidget не подходит?
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
borisbn, ну добавлять придется именно таким макаром.
IKM2007, вообще, можно. только не понимаю пользы от таких форм. реализации у них нет же. они ничего, кроме как отображаться, не могут. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Я не понял. Ты хочешь в дизайнере сделать 10 виджетов и потом их добавить в QStackeLayout или наоборот не использовать дизайнер вообще, а все создать в рантайме и потом добавить? |
|||
|
||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 2 Всего: 40 |
Нет, речь не о динамических страницах. Создал форму, во время создания выбрал widget. Теперь не знаю где этот виджет и как ее имя. Попробовал так:
не получилось. -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
В .cpp файле (например в mainwindow.cpp) подключаешь все хедеры новых форм:
И затем создаешь экземпляры:
Указатели можно сохранить в private секции класса главного окна, чтобы потом можно было легко достучаться до этих виджетов. |
||||
|
|||||
IKM2007 |
|
||||||||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 2 Всего: 40 |
SABROG, делаю так:
такие ошибки:
На всякий случай выложу .h и .cpp файлы. main_window.h
main_window.cpp
-------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
||||||||
|
|||||||||
SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вот ты навертел то:
Классы Ui::MainForm и тому подобные не являются виджетами. Это обычные классы, которые наследуют классы типа Ui_MyClass, которые в свою очередь не наследуют виджетов. В них находятся только списки указателей на дочерние виджеты и методы типа setupUi(), который создает дочерние виджеты и ставит им того родителя, которого ты передал в метод setupUi(). Тебе нужно сделать по аналогии с MainWindow: //page1.h
//page1.cpp
И так для каждой страницы. Я не знаю в какой среде ты пишешь, но QtCreator генерит их автоматически, если .ui файл создается через контекстное меню "Добавить Новый->Класс Формы Qt Designer" |
||||||
|
|||||||
IKM2007 |
|
|||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 2 Всего: 40 |
Я так и сделал, то есть получается, что сперва создаем форму, затем создаем для каждой из форм свой отдельный класс наследующий сгенерированный класс соответствующей формы и только эти классы можем использовать, как виджеты? Это сообщение отредактировал(а) IKM2007 - 8.3.2010, 20:29 -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Да. Форма остается формой, пока её не заполнишь каким-нибудь расплавленным металлом. И тогда уже называть свой виджет Form::Form - не правильно, это уже готовый продукт и называть его следует MyWidget или как угодно, но только не Form. |
|||
|
||||
IKM2007 |
|
||||
![]() Зима близко ![]() ![]() Профиль Группа: Участник Сообщений: 702 Регистрация: 26.4.2008 Где: olmedreca Репутация: 2 Всего: 40 |
SABROG, я сделал не так, как сделал ты, у меня была ошибка, компилятор не мог найти <QtCore/QScopedPointer>, в общем сделал так:
.h
.cpp
Спасибо за помощь. ![]() -------------------- "К чёрту обстоятельства, я создаю возможности." Брюс Ли |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, 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. |