首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QGraphicsView不会扩展

QGraphicsView不会扩展
EN

Stack Overflow用户
提问于 2012-12-19 19:22:44
回答 1查看 818关注 0票数 1

我很难让QWidgets根据需要进行扩展。这不是我第一次遇到这个问题,上一次我通过入侵大型sizeHint()来解决这个问题。这是错误的方法,我真的很想学习正确的方法。

如果有人能帮我,我会非常感激的。下面是它的外观和我用代码编写的布局。如果需要的话我可以提供密码。请帮我学习布局。

编辑:第一个布局模拟实际上是正确的。我是附加另一个布局模型,这会造成一个问题。

代码。三节课。

MainWindow类:

代码语言:javascript
复制
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent)
{
    QWidget * w = new MainCentralWidget(this);
    setCentralWidget(w);
}

MainCentralWidget类:

代码语言:javascript
复制
MainCentralWidget::MainCentralWidget(QWidget *parent) :
    QWidget(parent)
{
    SetupLayout();
}

void MainCentralWidget::SetupLayout()
{
    QVBoxLayout * main_layout;
    QFormLayout * plugin_layout;

    //Start
    main_layout = new QVBoxLayout();

    //Setup the plugin chooser
    plugin_layout = new QFormLayout();
    QComboBox * plugins_box = new QComboBox();

    plugin_layout->addRow("Choose Plugin: ", plugins_box);

    QFrame* line = new QFrame();
    line->setFrameShape(QFrame::HLine);
    line->setFrameShadow(QFrame::Sunken);
    plugin_layout->addRow(line);

    main_layout->insertLayout(0, plugin_layout);

    main_layout->insertWidget(1, new SubWidget());

    //Finish
    setLayout(main_layout);

    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}

SubWidget类:

代码语言:javascript
复制
SubWidget::SubWidget(QWidget *parent) :
    QWidget(parent)
{
    setStyleSheet("QWidget { background: yellow }");

    setMaximumSize(10000,10000);
    setMinimumSize(100,100);
    setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    SetupLayout();


    //setMaximumSize(10000,10000);
}

void SubWidget::SetupLayout()
{
    QHBoxLayout main_layout;

    main_layout.setAlignment(Qt::AlignTop | Qt::AlignLeft);
    main_layout.addWidget(&m_graphics_view);
    m_graphics_view.setMaximumSize(10000,100000);

    setLayout(&main_layout);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-19 20:07:15

代码语言:javascript
复制
void SubWidget::SetupLayout()
{
    QHBoxLayout main_layout;

    main_layout.setAlignment(Qt::AlignTop | Qt::AlignLeft);
    main_layout.addWidget(&m_graphics_view);
    m_graphics_view.setMaximumSize(10000,100000);

    setLayout(&main_layout);
}

您的main_layoutSetupLayout完成后立即被销毁,因为它超出了范围。因此,实际上,您的SubWidget没有任何布局。这就是为什么小部件显示错误的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13959615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档