Russian Qt Forum
Ноябрь 25, 2024, 06:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: как вызвать пользовательский виджет на форме проекта  (Прочитано 5835 раз)
styu
Гость
« : Декабрь 18, 2014, 22:38 »

Здравствуйте, уважаемые программисты!
Я создала класс myWidget потомок QWidget, в котором создаю frame, а на нем создаю TableView и разные кнопочки. На главном окне приложения в верхней части формы расположены  несколько кнопочек и хотелось бы, чтобы под этими кнопочками отобразился frame со всем его содержимым из моего класса myWidget. Вызываю таким образом
Код:
myWidget* wd = new myWidget();
setCentralWidget(wd->frame);
wd->show();

Происходит следующее, содержимое класса myWidget отрисовывается , но перекрывается вся форма главного окна. Что делать не знаю. Помогите, пожалуйста. Заранее спасибо.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 18, 2014, 23:06 »

Происходит следующее, содержимое класса myWidget отрисовывается , но перекрывается вся форма главного окна. Что делать не знаю. Помогите, пожалуйста. Заранее спасибо.

т.е. на окно QMainWindow уже что-то кроме кнопок было помещено?
Записан

Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Декабрь 19, 2014, 08:48 »

Код:
myWidget* wd = new myWidget();
setCentralWidget(wd->frame);
wd->show();
При таком раскладе wd - независимое окно, какой в этом смысл? Просто 
Код
C++ (Qt)
setCentralWidget(new myWidget());
Записан
styu
Гость
« Ответ #3 : Декабрь 19, 2014, 19:03 »

Цитировать
т.е. на окно QMainWindow уже что-то кроме кнопок было помещено?
Есть MainWindow, на котором размещены несколько кнопок, по клику на одной из кнопок вызывается содержимое класса myWidget, которое должно быть размещено под этими кнопками.
Записан
styu
Гость
« Ответ #4 : Декабрь 19, 2014, 19:07 »

Цитировать
При таком раскладе wd - независимое окно, какой в этом смысл?
оно, как раз не независимое, оно полностью перекрывает содержимое MainWindow, видимым остается только оглавление формы.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Декабрь 19, 2014, 21:51 »

Цитировать
т.е. на окно QMainWindow уже что-то кроме кнопок было помещено?
Есть MainWindow, на котором размещены несколько кнопок, по клику на одной из кнопок вызывается содержимое класса myWidget, которое должно быть размещено под этими кнопками.

похоже вы не поняли меня )
кнопки можно и нужно разместить на toolBar окна MainWindow, а у вас похоже, они размещены на центральной области MainWindow, поэтому и делается замена, когда вызываете setCentralWidget )

Я попробую угадать, что вы хотите сделать Улыбающийся
Наверное, что-то вроде этого ) Содержимое меняется нажатием кнопок
сделал на qt5
« Последнее редактирование: Декабрь 19, 2014, 21:52 от gil9red » Записан

styu
Гость
« Ответ #6 : Декабрь 19, 2014, 22:07 »

Кнопки действительно размещены на центральной области MainWindow, главное окно разрабатываю не я, и оно одобрено заказчиком. А свой модуль программы со всей графической оболочкой я оформила в отдельный класс. И в MainWindow вызываю его только по кнопке. Неужели никак нельзя реализовать корректное размещение графического содержимого моего класса в главном окне, не прибегая к помощи toolBar-а? Заранее спасибо
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 20, 2014, 00:00 »

Неужели никак нельзя реализовать корректное размещение графического содержимого моего класса в главном окне, не прибегая к помощи toolBar-а? Заранее спасибо

Можно: разместите ниже кнопок QWidget на который с помощью компоновщиков (layout) будете помещать свои виджеты
или разместите ниже кнопок QStackedWidget, на который добавите виджет (ы)

в архиве я написано как можно сделать.
« Последнее редактирование: Декабрь 20, 2014, 00:11 от gil9red » Записан

vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #8 : Декабрь 20, 2014, 03:12 »

new myWidget(mainWindow.... или как там оно называется даем parent'а.)
Программист который делал/делает главное окно должен дать Вам layout в который вы и вставляете свой виджет и как его размещать - задача этого layout и программиста который делал главное окно, чей дизайн уже утвержден. Улыбающийся
Записан
styu
Гость
« Ответ #9 : Декабрь 21, 2014, 12:42 »

Спасибо, завтра на работе попробую и обязательно отпишусь
Записан
styu
Гость
« Ответ #10 : Декабрь 23, 2014, 22:08 »

Спасибо большое за помощь, получилось.
Отдельное спасибо gil9red за исходник.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.153 секунд. Запросов: 22.