Четверг, 18.05.2023 08:00

Как открыть новое окно со смещением относительно родительского в Qt

Как открыть новое окно со смещением относительно родительского в Qt

В процессе разработки приложения на Qt6 вам, возможно, понадобится открыть одно или несколько новых окон. Если размер окон различается у вас не возникнет с ними никаких затруднений.

Но что если размер окон одинаков и заказчик требует, чтобы они такими и остались?

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

Создадим новый проект и добавим две формы ParentForm и ChildForm

2023-05-18_10-04-17.png

2023-05-18_10-04-34.png

Укажем для форм одинаковые размеры.

Уменьшим размер главной формы и добавим кнопку, получим:

2023-05-18_10-05-33.png

Для кнопки добавим слот: 

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 то получим следующее:

2023-05-18_10-08-26.png

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

Чтобы исправить эту проблему внесем изменения в слот кнопки на форме ParentForm 

void ParentForm::on_pushButton_clicked()
{
    ChildForm *childWin = new ChildForm(this->parentWidget());

    childWin->move(this->mapToGlobal(QPoint(10, 0)));

    childWin->show();
}

Запустим:

2023-05-18_10-11-22.png

Получилось ровно то, что нам было нужно.

Изменяя координаты точки: 

QPoint(10, 0)

Мы можем регулировать смещение окна ChildForm.

Заключение

Сегодня мы рассмотрели способы открытия новых окон в Qt6 по нажатию на кнопку.

Добавили слоты открывающие новые окна и разобрались как установить смещение положения относительно родительского окна.

Категория Qt
Теги Qt Qt6

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 77