Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: styu от Декабрь 18, 2014, 22:38



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

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


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: gil9red от Декабрь 18, 2014, 23:06
Происходит следующее, содержимое класса myWidget отрисовывается , но перекрывается вся форма главного окна. Что делать не знаю. Помогите, пожалуйста. Заранее спасибо.

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


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: Igors от Декабрь 19, 2014, 08:48
Код:
myWidget* wd = new myWidget();
setCentralWidget(wd->frame);
wd->show();
При таком раскладе wd - независимое окно, какой в этом смысл? Просто 
Код
C++ (Qt)
setCentralWidget(new myWidget());


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: styu от Декабрь 19, 2014, 19:03
Цитировать
т.е. на окно QMainWindow уже что-то кроме кнопок было помещено?
Есть MainWindow, на котором размещены несколько кнопок, по клику на одной из кнопок вызывается содержимое класса myWidget, которое должно быть размещено под этими кнопками.


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: styu от Декабрь 19, 2014, 19:07
Цитировать
При таком раскладе wd - независимое окно, какой в этом смысл?
оно, как раз не независимое, оно полностью перекрывает содержимое MainWindow, видимым остается только оглавление формы.


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: gil9red от Декабрь 19, 2014, 21:51
Цитировать
т.е. на окно QMainWindow уже что-то кроме кнопок было помещено?
Есть MainWindow, на котором размещены несколько кнопок, по клику на одной из кнопок вызывается содержимое класса myWidget, которое должно быть размещено под этими кнопками.

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

Я попробую угадать, что вы хотите сделать :)
Наверное, что-то вроде этого ) Содержимое меняется нажатием кнопок
сделал на qt5


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: styu от Декабрь 19, 2014, 22:07
Кнопки действительно размещены на центральной области MainWindow, главное окно разрабатываю не я, и оно одобрено заказчиком. А свой модуль программы со всей графической оболочкой я оформила в отдельный класс. И в MainWindow вызываю его только по кнопке. Неужели никак нельзя реализовать корректное размещение графического содержимого моего класса в главном окне, не прибегая к помощи toolBar-а? Заранее спасибо


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: gil9red от Декабрь 20, 2014, 00:00
Неужели никак нельзя реализовать корректное размещение графического содержимого моего класса в главном окне, не прибегая к помощи toolBar-а? Заранее спасибо

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

в архиве я написано как можно сделать.


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: vbv от Декабрь 20, 2014, 03:12
new myWidget(mainWindow.... или как там оно называется даем parent'а.)
Программист который делал/делает главное окно должен дать Вам layout в который вы и вставляете свой виджет и как его размещать - задача этого layout и программиста который делал главное окно, чей дизайн уже утвержден. :)


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: styu от Декабрь 21, 2014, 12:42
Спасибо, завтра на работе попробую и обязательно отпишусь


Название: Re: как вызвать пользовательский виджет на форме проекта
Отправлено: styu от Декабрь 23, 2014, 22:08
Спасибо большое за помощь, получилось.
Отдельное спасибо gil9red за исходник.