QWidget::layout() 不能 return QGridLayout?
QWidget::layout() can't return QGridLayout?
我有一个包含 QGridLayout 的 QWidget,而 QGridLayout 又包含一些 QPushButton。这些都是以编程方式生成的。在代码的后面(与定义布局的地方分开),我需要能够向布局中的特定 row/column 位置添加更多按钮。
我尝试使用:widget->layout()->addWidget(button, row, col)
来引用布局并添加按钮。但是,widget->layout()
只是 returns 一个通用的 QLayout 项,它不允许我指定行值和列值。有没有什么方法可以从特定的小部件引用 QGridLayout,而不必通过名称知道布局?如果它有所作为,我正在使用 Qt 4.8。
您始终可以通过 dynamic_cast
:
将其转换为 QGridLayout*
auto gridLayout = dynamic_cast<QGridLayout*>(widget->layout());
如果您确定 widget->layout()
指向您的 QGridLayout
,则无需检查并可以使用 static_cast
。否则,检查 gridLayout
与 nullptr
.
我有一个包含 QGridLayout 的 QWidget,而 QGridLayout 又包含一些 QPushButton。这些都是以编程方式生成的。在代码的后面(与定义布局的地方分开),我需要能够向布局中的特定 row/column 位置添加更多按钮。
我尝试使用:widget->layout()->addWidget(button, row, col)
来引用布局并添加按钮。但是,widget->layout()
只是 returns 一个通用的 QLayout 项,它不允许我指定行值和列值。有没有什么方法可以从特定的小部件引用 QGridLayout,而不必通过名称知道布局?如果它有所作为,我正在使用 Qt 4.8。
您始终可以通过 dynamic_cast
:
QGridLayout*
auto gridLayout = dynamic_cast<QGridLayout*>(widget->layout());
如果您确定 widget->layout()
指向您的 QGridLayout
,则无需检查并可以使用 static_cast
。否则,检查 gridLayout
与 nullptr
.