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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: прорисовка в mdi  (Прочитано 2942 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Октябрь 17, 2018, 22:35 »

Здравствуйте. Есть вопрос по mdi приложению. Само приложение прикрепил. Смысл в том что когда я нажимаю на кнопку (button) появляется прогресс бар.Мне нужно сделать так чтобы в окне mdi прорисовывался прогресс бар(qwidget), но он почему-то не прорисовывается. В случае если я ставлю
Код
C++ (Qt)
merf2 *mer=new merf2(0)
То прогресс бар прорисовывается, но мне это не подходит тк этот прогресс бар получается гуляет по всему окну, а мне нужно чтобы он был в границе mdi
Записан
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« Ответ #1 : Октябрь 19, 2018, 21:02 »

merf2 наследник QWidget
если код
Код
C++ (Qt)
merf2 *mer=new merf2(0)
mer->show
 

то картина

при этом окно перемещается как за границы mdi так и за границы всего окна приложения

Код
C++ (Qt)
merf2 *mer=new merf2(this)
mer->show
 
то картина

то почему то виджет не прорисовывается когда я ему указываю наследника


Мне же нужно поведение чтобы все полностью прорисовывалось на не выходило за границы mdi
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Октябрь 22, 2018, 05:58 »

когда у виджета нет родителя, то виджет - окно верхнего уровня.
когда у виджета есть родитель, то виджет является частью родителя.

задачу толком не понял, может тебе диалог с прогрессбаром нужен?
тогда и используй диалог (например, готовый QProgressDialog), задавая ему в качестве родителя QMdiSubWindow
Записан

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

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Октябрь 22, 2018, 08:43 »

то почему то виджет не прорисовывается когда я ему указываю наследника
Наверное под "прорисовывается" имеется ввиду "окно с рамкой и титлом".  Но тогда да, юзер может его двигать куда угодно - для этого титл и предназначен.

Мне же нужно поведение чтобы все полностью прорисовывалось на не выходило за границы mdi
Выходило-не выходило - дело десятое. Наверное Вы хотели чтобы блокировалось только данное mdi окно, но не остальные, и можно было переключаться между разными mdi. Если так, то на платформе Вындоуз такого (стандартного) окна не знаю. На других есть, но титлов они не имеют и двигаться не могут, это нормально/правильно.

Итого: не стоит упорствовать чтобы добиться отрисовки системного титла - по смыслу это все равно "не то". Вставьте прогресс в рамочку - и все дела. Хотя бы так
Код
C++ (Qt)
void Form::on_pushButton_clicked()
{
QFrame * frame = new QFrame(this);
frame->setFrameStyle(QFrame::Panel | QFrame::Plain);
frame->setGeometry(100, 100, 400, 70);
merf2 * mer = new merf2(frame);
      frame->show();
Ъ
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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