вторник, 25 марта 2014 г.

Qt: Позиционирование окон

Задавать позицию окна в Qt нужно вручную. В статье описан метод как можно разместить окно по центру относительно рабочего стола, или родительского окна.

Для этого можно использовать описанный ниже метод.

Описание метода

void MainWindow::setPosition(QWidget & current, QWidget * parrent = 0)

Определение метода

void MainWindow::setPosition(QWidget & current, QWidget * parrent)
{
    int left, top;
    if ( parrent ){
        left = parrent->pos().x() + (parrent->frameGeometry().width() / 2) - 
               (current.frameGeometry().width() / 2);
        top = parrent->pos().y() + (parrent->frameGeometry().height() / 2) - 
              (current.frameGeometry().height() / 2);
    } else{
        left = (qApp->desktop()->width() / 2) - (current.frameGeometry().width() / 2);
        top = (qApp->desktop()->height() / 2) - (current.frameGeometry().height() / 2);
    }
    current.setGeometry(QRect(left, top, 
               current.frameGeometry().width(), 
               current.frameGeometry().height()));
}

Метод setPosition() принимает два параметра типа QWidget. Первый параметр current - это окно которое мы хотим отцентрировать, второй параметр parrent - это родительское окно, относительно которого нужно позиционировать дочернее.

Удачи!

Комментариев нет:

Отправить комментарий