我有一个包含QGridLayout的QWidget,而QGridLayout又包含一些QPushButtons。这些都是以编程方式生成的。稍后在代码中(与定义布局的位置分开),我需要能够在布局中的特定行/列位置添加更多按钮。
我尝试使用:widget->layout()->addWidget(button, row, col)
来引用布局并添加按钮。但是,widget->layout()
仅返回通用QLayout项,这不允许我指定行和列值。有没有办法从特定小部件引用QGridLayout,而无需按名称知道布局?如果它有所作为,我正在使用Qt 4.8。
答案 0 :(得分:3)
您始终可以dynamic_cast
:
QGridLayout*
auto gridLayout = dynamic_cast<QGridLayout*>(widget->layout());
如果您确定widget->layout()
指向QGridLayout
,则您无需检查并可以使用static_cast
。否则,请针对gridLayout
检查nullptr
。