resize()不应用/处理作为布局一部分的小工具



我有以下代码:

main_layout_.setSpacing(0);
main_layout_.setContentsMargins(0, 0, 0, 0);
main_layout_.setAlignment(Qt::AlignLeft | Qt::AlignTop);
auto btn = new QPushButton("btn");
btn->resize(80,80);
main_layout_.addWidget(btn);
main_layout_.addWidget(new QPushButton("btn"));
main_layout_.addWidget(new QPushButton("btn"));
main_layout_.addWidget(new QPushButton("btn"));
centralWidget()->setLayout(&main_layout_);

问题是btn->resize(80,80);没有应用。我试着添加下一行:

main_layout_.setSizeConstraint(QLayout::SetNoConstraint);
btn->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

我还尝试了所有的QSizePolicy标志,但没有结果
我做错了什么?如何为我想要的任何按钮设置所需的大小
P.S.使用setMinimumSize()setFixedSize()不是一个选项,因为这样按钮往往会忽略外部因素的调整大小查询。

正如dom0所说,如果你想自己应用大小,就不要使用布局。如果您仍然想应用布局和固定大小,则必须setMinimumSize(),并在每次父对象的大小更改时手动重新分配(例如通过插槽)。

最新更新