【发布时间】:2011-04-06 06:05:41
【问题描述】:
我想将一些小部件放置在某个随机位置的父小部件中,例如 Point (10,10) 处的一个按钮和 (15,40) 处的另一个按钮等。如何实现这一点? QGridLayout 将所有内容都推入行列样式。但是我想把小部件放在任何我想要的地方,有人可以帮我吗?
【问题讨论】:
标签: c++ user-interface qt
我想将一些小部件放置在某个随机位置的父小部件中,例如 Point (10,10) 处的一个按钮和 (15,40) 处的另一个按钮等。如何实现这一点? QGridLayout 将所有内容都推入行列样式。但是我想把小部件放在任何我想要的地方,有人可以帮我吗?
【问题讨论】:
标签: c++ user-interface qt
如果您真的想要设置绝对位置,我会完全忽略使用布局。您可以使用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 库。在不同的平台上,许多显示内容可能会发生变化(即按钮中文本的字体大小),因此实际按钮的大小可以变化以适应更大或更小的字体大小。如果您使用上例中的绝对位置,这可能会影响您精心布置的按钮。
如果您使用布局,则可以避免重叠按钮或从窗口边缘掉落的按钮。
【讨论】:
你可以在 QT 中看到我对覆盖按钮的回答:Qt Widget Overlays。这可能会帮助您实现您想要的。
【讨论】: