Qt Widget не показывает - PullRequest
       3

Qt Widget не показывает

3 голосов
/ 04 сентября 2011

Я создаю класс, который является подклассом QWidget, используемого для рисования изображения, только для рисования изображения, с именем ImageWidget.

Когда я только создаю ImageWidget и вызываю ImageWidget.show (), всеЭто хорошо.Затем я создаю еще один подкласс QWidget, как показано ниже.В настоящее время показывает только комбокс и ползунок, изображение не показывает.Может ли кто-нибудь помочь мне об этом?

    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);
    }

С наилучшими пожеланиями,

1 Ответ

3 голосов
/ 04 сентября 2011

Скорее всего, вы не сообщаете размер для вашего виджета из sizeHint, в вашем пользовательском подклассе реализуете virtual QSize sizeHint () const и что-то возвращаете. Ваш виджет, вероятно, покажет. При отсутствии sizeHint система считает, что ваш виджет может иметь размер 0x0, и исключает его из макета. Есть и другие способы обойти это, играя с настройками макета. Это немного не интуитивно понятно ... Возможно, вы захотите реализовать некоторые другие функции, связанные с размером, из QWidget

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...