我有一个包含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
。