QT - 小部件 - 定位

11

我想在一个父部件中随意放置一些小部件,例如一个按钮在(10,10)处,另一个按钮在(15,40)处等。如何实现?QGridLayout会将所有小部件都按行列样式排列,但我希望可以随意放置小部件。有人可以帮忙吗?

2个回答

22

如果您真的想设置绝对位置,我建议完全忽略使用布局。您可以使用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试图成为一个独立于平台的GUI库。在不同的平台上,很多显示内容都可能发生改变(比如按钮中文本的字体大小),因此你实际的按钮大小可能会因适应较大或较小的字体而变化。如果你像上面的例子一样使用绝对位置,这可能会使你精心排列的按钮布局变得混乱。

如果你使用布局,可以避免重叠的按钮或按钮溢出窗口的情况。


3
你可以查看我在QT中关于叠加按钮的答案:Qt Widget Overlays。这可能会帮助你实现你想要的功能。

+1,已在那里添加了一条评论,说明如何手动对齐小部件。 - Frank Osterfeld

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接