QDialog и области за превъртане: как да ги обединим?

От примера на ImageViewer:

 ImageViewer::ImageViewer()
 {
     imageLabel = new QLabel;
     imageLabel->setBackgroundRole(QPalette::Base);
     imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
     imageLabel->setScaledContents(true);

     scrollArea = new QScrollArea;
     scrollArea->setBackgroundRole(QPalette::Dark);
     scrollArea->setWidget(imageLabel);
     setCentralWidget(scrollArea);

     resize(500, 400);
 }

Имам нужда зоната за превъртане да се показва не в централната джаджа, а в диалогов прозорец вътре в централната джаджа.

Опитах с:

ImageViewer::ImageViewer()
{
    QImage image(fileName);

    plotImg = new QLabel;
    plotImg->setBackgroundRole(QPalette::Base);
    plotImg->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
    plotImg->setScaledContents(true);

    plotImg->setPixmap(QPixmap::fromImage(image));

    scrollArea = new QScrollArea(this);
    scrollArea->setWidget(plotImg);
    scrollArea->setBackgroundRole(QPalette::Dark);

    printAct->setEnabled(true);
    fitToWindowAct->setEnabled(true);

    if(!fitToWindowAct->isChecked())
        plotImg->adjustSize();

    return true;
}

От този код получавам диалоговия прозорец в централния уиджет. Този диалогов прозорец обаче не съдържа самото изображение, а областта за превъртане, която съдържа изображението.

Бих искал диалоговият прозорец и зоната за превъртане да бъдат „едно и също нещо“...


person Pietro    schedule 07.10.2013    source източник


Отговори (1)


лесно. Не използвайте диалогов прозорец, просто накарайте ImageViewer да наследи директно от QScrollArea.

person Kuba hasn't forgotten Monica    schedule 08.10.2013