2010-08-31 98 views
9

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

回答

19

如果你真的想要设置绝对位置,我会忽略使用布局在一起。您可以通过使用移动函数或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库。在不同的平台上,很多显示内容可能会发生变化(即按钮中文本的字体大小),所以实际按钮的大小可能会有所不同,以适应较大或较小的字体大小。这可以抛开你精心设计的按钮,你可以像上面的例子那样使用绝对位置。

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

+0

谢谢你,它的工作原理 – prabhakaran 2010-08-31 16:11:31

3

你可以在QT中看到我的答案覆盖按钮:Qt Widget Overlays。这可以帮助你实现你想要的。

+0

+1,在那里添加了一条评论,例如:手动对齐小部件。 – 2010-08-31 13:03:53