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

Qt/C++ image does not appear on screen

本文关键字:屏幕 C++ 图像 Qt      更新时间:2023-10-16

这是我尝试制作的 MainWindow 构造函数的代码 屏幕上出现图像 (000.jpg(。可能出了什么问题?有吗 从文件在屏幕上显示图像的替代方法?附注: 映像文件位于.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);
 }

问题是由于忽略策略而出现的,标签似乎无法扩展布局(之后或因为 topFillerbottomFiller 展开(:

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

通过删除 setSizePolicy(( 或使用扩展来尝试使用普通策略:

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

另外,设置 QLabel setScaledContents 也很好,以便在您手动调整视图大小时图像将调整大小:

imageLabel->setScaledContents(true);