将小部件渲染到paintdevice上的不同位置

时间:2015-07-13 15:29:41

标签: qt

使用Qt我想在一个DINA4页面上打印多个小部件。 假设我有3个小部件,我想直接放在彼此旁边:

// from your updated JSFiddle
var o1 = ctr();
var o2 = o1.clone();

o2.a = 5;

// Why are these values different????
alert('Direct=' + o2.a + ', via Method=' + o2.f());
// prints 'Direct=5, via Method=0'

o1.a = 3;
alert('Direct=' + o2.a + ', via Method=' + o2.f());
// prints 'Direct=5, via Method=3'

当我在下面的代码中渲染它们时,所有3个小部件在C的位置上呈现在彼此之上(或者甚至A和B都没有渲染,我没有看到它)。我打算按照最后一个小部件的大小将每个小部件向下移动一点,直接将它呈现在最后一个小部件的旁边。这似乎不起作用:

-------
|  A  |
-------
|  B  |
-------
|  C  |
-------

如果渲染了所有3个小部件,那么循环如何影响A和B的位置,因为我每次都创建一个新的QPainter-Object?

1 个答案:

答案 0 :(得分:0)

您可以在布局中设置3个元素

 QVVoxLayout *Vertical_layout;
 this->getLayout()->addLayout(this->Vertical_layout);
 Vertical_layout->addItem(ElementA);
 Vertical_layout->addItem(ElementB);
 Vertical_layout->addItem(ElementC);

你可以用以下方法设置它们之间的距离:

 Vertical_layout- >setContentsMargins(left,top,right,bottom);

有了它,他们将永远在他们的位置。