3

我有一个包含 QGridLayout 的 QWidget,它又包含一些 QPushButtons。这些都是以编程方式生成的。稍后在代码中(与定义布局的位置分开),我需要能够向布局中的特定行/列位置添加更多按钮。

我尝试使用:widget->layout()->addWidget(button, row, col)引用布局并添加按钮。但是,widget->layout()只返回一个通用的 QLayout 项目,它不允许我指定行和列值。有没有办法从特定的小部件中引用 QGridLayout,而不必知道布局的名称?如果它有所作为,我正在使用 Qt 4.8。

4

1 回答 1

5

您始终可以通过以下方式将其转换QGridLayout*dynamic_cast

auto gridLayout = dynamic_cast<QGridLayout*>(widget->layout());

如果您确定widget->layout()指向您的QGridLayout,则不必检查并可以使用static_cast. 否则,检查gridLayout.nullptr

于 2015-05-15T18:52:55.027 回答