Qt Widget 不显示

问题描述 投票:0回答:1

我创建了一个类,它是用于(仅)绘制图像的 QWidget 的子类,名为 ImageWidget。

当我只创建一个 ImageWidget 并调用 ImageWidget.show() 时,一切都很好。然后我创建另一个 QWidget 子类,如下所示。目前,仅显示 ComboBox 和滑块。图像不显示。我怎样才能让图像出现?

MainWindow::MainWindow(QWidget *parent) : QWidget(parent)
{
    imgWidget=new ImageWidget(this);
    fractalTypeLabel=new QLabel(tr("Type"));
    typeCombo=new QComboBox();
    typeCombo->addItem(tr("One"));
    typeCombo->addItem(tr("Two"));
    scalefactorLabel=new QLabel(tr("Scale Factor"));
    scalefactorSlider=new QSlider(Qt::Horizontal);
    scalefactorSlider->setTickInterval(1);
    scalefactorSlider->setTickPosition(QSlider::TicksBelow);

    QVBoxLayout *imageLayout=new QVBoxLayout();
    imageLayout->addWidget(imgWidget);

    QGridLayout *gridLayout=new QGridLayout;
    gridLayout->addWidget(fractalTypeLabel,0,0);
    gridLayout->addWidget(typeCombo,0,1);
    gridLayout->addWidget(scalefactorLabel,1,0);
    gridLayout->addWidget(scalefactorSlider,1,1);

    QHBoxLayout *mainLayout=new QHBoxLayout;
    mainLayout->addLayout(imageLayout);
    mainLayout->addLayout(gridLayout);

    this->setLayout(mainLayout);
}
c++ qt
1个回答
3
投票

很可能您没有从

sizeHint
报告小部件的大小,在您的自定义子类中实现
virtual QSize sizeHint () const
并返回一些内容。您的小部件可能会显示。如果没有
sizeHint
,系统会认为您的小部件的大小可以为 0x0 并将其从布局中删除。还有其他方法可以通过调整布局设置来解决这个问题。这有点不直观......您可能想在
QWidget

中实现一些其他与尺寸相关的功能
© www.soinside.com 2019 - 2024. All rights reserved.