Qt / C ++图像不会出现在屏幕上

时间:2018-01-17 19:41:29

标签: c++ qt qimage

以下是我尝试制作的MainWindow构造函数的代码  图像(000.jpg)出现在屏幕上。可能有什么不对?在那儿  从文件在屏幕上显示图像的替代方法? PS:The  image文件位于.cpp项目文件所在的目录中。

 MainWindow::MainWindow()
 {
     QWidget *widget = new QWidget;
     setCentralWidget(widget);

     QWidget *topFiller = new QWidget;
     topFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

     QWidget *bottomFiller = new QWidget;
     bottomFiller->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

     QVBoxLayout *layout = new QVBoxLayout;
     layout->setMargin(5);
     layout->addWidget(topFiller);

     QImage myImg("000.jpg");
     myImageFile = myImg;
     imageLabel = new QLabel();
     imageLabel->setBackgroundRole(QPalette::Base);
     imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
     imageLabel->setScaledContents(true);
     imageLabel->setPixmap(QPixmap::fromImage(myImageFile));
     layout->addWidget(imageLabel);

     layout->addWidget(bottomFiller);
     widget->setLayout(layout);

     createActions();
     createMenus();

     setWindowTitle(tr("Image App"));
     setMinimumSize(160, 160);
     resize(480, 320);
 }

1 个答案:

答案 0 :(得分:2)

由于忽略策略而出现问题,标签似乎未能扩展布局(之后或因为 topFiller bottomFiller 扩展) :

Content-Encoding

通过删除setSizePolicy()来尝试使用正常策略,或者使用扩展

  imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

还可以设置QLabel setScaledContents,以便在手动调整视图大小时图像将调整大小:

imageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);