c++ - QLayout 和 QWidget 之间的转换

标签 c++ qt qwidget qlayout

我有两个示例,其中我基本上是在创建包装器对象,而不是理想情况下的简单转换。

如果 foo 是之前实例化的 QWidget*,我是否可以避免为其创建包装器 QLayout:

const auto layout = new QVBoxLayout();
layout->addWidget( foo );
const auto frame = new QLabel( QLatin1String( "Why Do I Need a Layout?" ) );
frame->setLayout( layout );

如果 foo 是之前实例化的 QLayout*,我是否可以避免为其创建包装器 QWidget:

const auto widget = new QWidget();
widget->setLayout( foo );
const auto tabs = new QTabWidget();
tabs->addTab( widget, QLatin1String( "Why Do I Need a Widget?" ) );

最佳答案

总是可以编写自己的包装函数:

QLayout* wrap(QWidget* w){
    auto layout = new QVBoxLayout();
    layout->addWidget( w );
    return layout;
}
QWidget* wrap(QLayout* l){
    auto widget = new QWidget();
    widget->setLayout( l );
    return widget;
}

关于c++ - QLayout 和 QWidget 之间的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24262564/

相关文章:

c++ - Qt:设置自定义小部件中小部件的最小大小

python - PyQt4 - 小部件未显示

c++ - Boost 1.57.0 程序选项 MSVS 2013 链接器错误

c++ - 如何从 C++ 代码获取 linux 上的线程 pid?

c++ - 类实例线程亲和性对其数据有影响吗?

qt - 不想在我的对话框上有关闭按钮

c++ - QML:退出 QApplication 时关闭所有 QWidget

java - org/apache/commons/math3/linear/MatrixUtils 中的 JNIEnv->getMethodID for createRealMatrix(double [][] data)

c++ - 将 std::istream::sentry 与 std::istream 一起使用

c++ - Qt (Creator) 与 WinSocks (ws2_32)