qt - 小部件 - 定位

时间:2010-08-31 12:20:40

标签: c++ user-interface qt

我想在一些随机位置的父窗口小部件中放置一些小部件,例如Point(10,10)处的一个按钮和(15,40)处的另一个按钮等。如何实现这一目标。 QGridLayout正在将所有内容推入行列样式。但我想把小部件放在我想要的地方,任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:20)

如果确实想要设置绝对位置,我会忽略一起使用布局。您可以使用移动功能或 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库。在不同的平台上,许多显示内容都可以更改(即按钮中文本的字体大小),因此实际按钮的大小可以变化,以适应大小字体。如果您使用上面的示例中的绝对位置,这可以甩掉您精心间隔的按钮。

如果使用布局,可以避免重叠按钮或从窗口边缘掉落的按钮。

答案 1 :(得分:3)

您可以在QT中看到我对覆盖按钮的回答:Qt Widget Overlays。这可以帮助您实现您想要的目标。