
Как открыть новое окно со смещением относительно родительского в Qt
В процессе разработки приложения на Qt6 вам, возможно, понадобится открыть одно или несколько новых окон. Если размер окон различается у вас не возникнет с ними никаких затруднений.
Но что если размер окон одинаков и заказчик требует, чтобы они такими и остались?
Сегодня мы рассмотрим, как открыть новое окно по нажатию на кнопку и что бывает, если размер окон совпадает и как с этим бороться.
Создадим новый проект и добавим две формы ParentForm и ChildForm
Укажем для форм одинаковые размеры.
Уменьшим размер главной формы и добавим кнопку, получим:
Для кнопки добавим слот:
void MainWindow::on_pushButton_clicked()
{
ParentForm *parentWin = new ParentForm(this->parentWidget());
parentWin->show();
}
Для кнопки ParentForm добавим слот:
void ParentForm::on_pushButton_clicked()
{
ChildForm *childWin = new ChildForm(this->parentWidget());
childWin->show();
}
Запустим. Теперь если мы нажмем на кнопку Открыть на форме ParentForm то получим следующее:
Нас это не устраивает, мы не видим родительскую форму и не можем переключиться на нее.
Чтобы исправить эту проблему внесем изменения в слот кнопки на форме ParentForm
void ParentForm::on_pushButton_clicked()
{
ChildForm *childWin = new ChildForm(this->parentWidget());
childWin->move(this->mapToGlobal(QPoint(10, 0)));
childWin->show();
}
Запустим:
Получилось ровно то, что нам было нужно.
Изменяя координаты точки:
QPoint(10, 0)
Мы можем регулировать смещение окна ChildForm.
Заключение
Сегодня мы рассмотрели способы открытия новых окон в Qt6 по нажатию на кнопку.
Добавили слоты открывающие новые окна и разобрались как установить смещение положения относительно родительского окна.
Добавить комментарий