[英]qobject_cast<QVBoxLayout*>(layout()), is the appropriate cast?
考慮在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);
與static_cast相比,dynamic_cast具有多項檢查和好處,因此最好在可能時使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.