我想在一个父部件中随意放置一些小部件,例如一个按钮在(10,10)处,另一个按钮在(15,40)处等。如何实现?QGridLayout会将所有小部件都按行列样式排列,但我希望可以随意放置小部件。有人可以帮忙吗?
我想在一个父部件中随意放置一些小部件,例如一个按钮在(10,10)处,另一个按钮在(15,40)处等。如何实现?QGridLayout会将所有小部件都按行列样式排列,但我希望可以随意放置小部件。有人可以帮忙吗?
如果您真的想设置绝对位置,我建议完全忽略使用布局。您可以使用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库。在不同的平台上,很多显示内容都可能发生改变(比如按钮中文本的字体大小),因此你实际的按钮大小可能会因适应较大或较小的字体而变化。如果你像上面的例子一样使用绝对位置,这可能会使你精心排列的按钮布局变得混乱。
如果你使用布局,可以避免重叠的按钮或按钮溢出窗口的情况。