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

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

最佳答案

您可以随时通过 QGridLayout* 将其转换为dynamic_cast:

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

如果您确定widget->layout()指向QGridLayout,则无需检查即可使用static_cast。否则,请对照gridLayout检查nullptr

10-07 19:17
查看更多