qobject_cast<QVBoxLayout*>(layout()),是合适的演员表吗?

qobject_cast<QVBoxLayout*>(layout()), is the appropriate cast?

本文关键字:layout lt cast QVBoxLayout qobject gt      更新时间:2023-10-16

考虑到布局是在QWidget中设置的,代码如下:

setLayout(new QVBoxLayout);

然后需要对其进行检索(以便为布局添加更多内容)。这是用以下代码完成的:

QHBoxLayout *hLayoutTime(new QHBoxLayout);
qobject_cast<QVBoxLayout*>(layout())->addLayout(hLayoutTime);

qobject_cast是适合在这里使用的类型的演员阵容吗?

为了避免非种子强制转换,这样写:

void YourWidget::setupContents()
{
     QVBoxLayout *vLayout = new QVBoxLayout(this); // effectively this does setLayout(new QVBoxLayout);
     QHBoxLayout *hLayoutTime(new QHBoxLayout);
     vLayout->addLayout(hLayoutTime);
     … … …
}

查看当前示例中的代码,为什么不在创建时只获取指针?

auto *vLayout = new QVBoxLayout;
auto *hLayoutTime = new QHBoxLayout;
vLayout->addlaout(hLayoutTime);

回答你的问题,可能最合适的演员阵容是:

dynamic_cast<QHBoxLayout*>(new QVBoxLayout);

dynamic_cast与static_cast相比有很多优点,因此最好尽可能使用它。