qt - widget - positioning

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

10
задан prabhakaran 31 August 2010 в 12:20
поделиться

2 ответа

Если вы действительно хотите установить абсолютные позиции, я бы вообще проигнорировал использование макета. Вы можете вручную установить положение элементов, используя функцию 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);

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

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

21
ответ дан 3 December 2019 в 16:50
поделиться

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

3
ответ дан 3 December 2019 в 16:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: