QPushButton几何

时间:2012-07-27 09:52:08

标签: qt qwidget

QWidget内,我添加了QHBoxLayoutwith,两个QPushButton和一个QLabel。我可以更改作为布局容器的QWidget的几何图形,但不能更改QPushButton的大小:此处为我的代码

void
QTitleBar::resizeEvent( QResizeEvent * event)
{
 QSize size = event->size();
 int widgetHeight = size.rheight();
 int widgetWidth = size.rwidth();

 std::cout << "resizeEvent h:" <<
  widgetHeight  
  << " w: " << widgetWidth << std::endl;

 int layoutH = (int)((float)widgetHeight*(float)0.20);


 std::cout << "resizeEvent h:" <<
  layoutH  
  << " w: " << widgetWidth << std::endl;

 mapButton->setGeometry(0, 0, 120, layoutH);
 titleWidget->setGeometry(0, 0,  widgetWidth, layoutH);

// title->setGeometry(130, 0, widgetWidth - (2*130), layoutH);
// closeButton->setGeometry(widgetWidth - (2*130), 0,  130, layoutH);

 //closeButton->setGeometry(0, 0,  widgetWidth, layoutH);

}

有什么不对吗?

2 个答案:

答案 0 :(得分:1)

   mapButton->setMinimumSize(QSize(0,0));
   mapButton->setMaximumSize(QSize(10000,10000));

现在您可以将QPushButton设置为任意大小(实际上)。我希望这可以解决问题,因为titlewidget正在调整大小并重新定位,就像在代码中一样。

答案 1 :(得分:1)

[为更多读者提供一些建议......]

正如您注意到使用按钮的几何属性不正确,因为它由包含 QLayout 控制。有关Qt布局处理或编写自己的QLayout实现,请参阅here

另请注意,设置QWidget几何可能会产生infinite loop

当且仅当QWidget未包含在QWidget中时,QLayout的属性 height width 才会直接生效}}。否则,它将在 mimimumHeight maximumHeight 的维度内调整大小,该值适用于 width ,如指出的那样。 (请注意, size 属性仅捆绑这两个。)您可以通过修改QWidget s sizePolicy属性来影响此行为。

坚持ScarCode's answer使用

QWidget.setMinimumSize(QSize)
QWidget.setMaximumSize(QSize)

至于完整性,我想指出QPushButton的大小也可以使用Qt style sheets进行更改:

QPushButton {
    min-width: 0px;
    max-width: 10000px;
}