在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);
}
有什么不对吗?
答案 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属性来影响此行为。
QWidget.setMinimumSize(QSize)
QWidget.setMaximumSize(QSize)
至于完整性,我想指出QPushButton
的大小也可以使用Qt style sheets进行更改:
QPushButton {
min-width: 0px;
max-width: 10000px;
}