0

在 a 里面QWidget我放了一个QHBoxLayoutwith,两个QPushButtons 和一个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);

}

有什么不对?

4

2 回答 2

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

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

于 2012-07-27T10:50:15.977 回答
1

[给更多读者的一些建议......]

正如您注意到的那样,使用按钮的几何属性不是正确的方法,因为它是由包含QLayout控制的。请参阅此处了解 Qt 布局处理或编写自己的QLayout.

另请注意,设置a的几何形状QWidget可能会导致无限循环

当且aQWidgetQWidget包含在任何QLayout. 否则,它将在mimimumHeightmaximumHeight的尺寸内调整大小,这适用于所指出的宽度。(请注意,size属性仅捆绑了这两个属性。)您可以通过修改QWidgets sizePolicy属性来影响此行为。

所以坚持使用ScarCode的答案

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

至于完整性,我想指出,QPushButton也可以使用Qt 样式表更改大小:

QPushButton {
    min-width: 0px;
    max-width: 10000px;
}
于 2016-06-30T08:53:48.033 回答