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

标签 c++ qt qimage

这是我尝试制作的 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() 或使用Expanding 来尝试使用常规策略:

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

设置 QLabel setScaledContents 也很好,这样当您手动调整 View 大小时图像将调整大小:

imageLabel->setScaledContents(true);

关于c++ - Qt/C++ 图像不出现在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48308777/

相关文章:

c++ - Qt:如何在点击按钮时打开一个新的主窗口并删除原来的主窗口?

c++ - 使用 C++ 和 Qt 如何将 16 位原始文件显示为图像?

c++ - 画线到QImage

c++ - Qt QStatusBar 更宽的分隔符

java - 尝试在 64 位 WIndows 7 操作系统上使用 jawt

c++ - C 到 C++ : Converting structs to classes

c++ - 根据输入初始化特定的子类

c++ - 模型/ View : Filtering data beforehand in database or at runtime in proxy model?

c++ - QImage,可以改变资源图片的背景(png/jpg)

c++ - Opencv 2.4.12_2 calcOpticalFlowPyrLK() 错误