我有以下代码:
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()
,并在每次父对象的大小更改时手动重新分配(例如通过插槽)。