QDialog和滚动区域:如何合并它们?

时间:2013-10-07 16:54:34

标签: qt qdialog qscrollarea

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

从这段代码中,我得到了中央窗口小部件中的对话框。但是,此对话框不包含图像本身,而是包含图像的滚动区域。

我希望对话框和滚动区域是“相同的东西”......

1 个答案:

答案 0 :(得分:2)

易。不要使用对话框,只需ImageViewer直接从QScrollArea继承。