c++ - qobject_cast<QVBoxLayout*>(layout()),是否合适?

标签 c++ qt c++11 qt4 qt5

考虑到布局是在 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);
     … … …
}

关于c++ - qobject_cast<QVBoxLayout*>(layout()),是否合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36503368/

相关文章:

c++ - 依赖注入(inject)和运行时对象创建

C++如何将字节读取为独立于整数字节序的?

c++ - 通过从 std::function 隐式转换从 nullptr_t 到类型的转换

用于处理多个 HTTP 连接的 C++ 库

c++ - 我怎样才能有一个模板元素的容器

qt - 移动文本框编辑区域

c++ - 如何在 QImage 中显示此数据缓冲区

c++ - 在类中声明一个指针,但在另一个线程中初始化

c++ - 在 map 初始化列表中使用 std::make_pair

multithreading - C++11线程池——带输入参数的任务