qt - виджет - позиционирование - PullRequest
10 голосов
/ 31 августа 2010

Я хочу разместить некоторые виджеты в родительском виджете в некоторых случайных местах, например, одну кнопку в точке (10,10) и другую в (15,40) и т.Как этого добиться.QGridLayout помещает все в стиль столбцов строк.Но я хочу разместить виджеты везде, где захочу. Кто-нибудь может мне помочь?

Ответы [ 2 ]

20 голосов
/ 31 августа 2010

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

QWidget *parent = new QWidget();
parent->resize(400, 400);

QPushButton *buttonA = new QPushButton(parent);
buttonA->setText("First Button");
buttonA->move(10, 10);

QPushButton *buttonB = new QPushButton(parent);
buttonB->setText("Second Button");
buttonB->move(15, 40);

Примечание: Iпозволит избежать установки абсолютных позиций элементов в Qt.Зачем?Ну, Qt пытается быть независимой от платформы библиотекой GUI.На разных платформах может меняться множество элементов отображения (например, размер шрифта текста в кнопках), поэтому размер ваших реальных кнопок может варьироваться в зависимости от размера шрифта большого или меньшего размера.Это может отбросить ваши тщательно расположенные кнопки, если вы используете абсолютные позиции, как в примере выше.

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

3 голосов
/ 31 августа 2010

Вы можете увидеть мой ответ для кнопки наложения в QT: Qt Widget Overlays .Это может помочь вам достичь того, чего вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...