我创建了一个类,它是用于(仅)绘制图像的 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);
}
很可能您没有从
sizeHint
报告小部件的大小,在您的自定义子类中实现 virtual QSize sizeHint () const
并返回一些内容。您的小部件可能会显示。如果没有 sizeHint
,系统会认为您的小部件的大小可以为 0x0 并将其从布局中删除。还有其他方法可以通过调整布局设置来解决这个问题。这有点不直观......您可能想在 QWidget
中实现一些其他与尺寸相关的功能