首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt/C++图像不出现在屏幕上

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

Stack Overflow用户
提问于 2018-01-17 19:41:28
回答 1查看 192关注 0票数 1

下面是MainWindow构造函数的代码,我试图在屏幕上显示一个图像(000.jpg)。有什么不对的?是否有其他方法在屏幕上显示文件中的图像?PS:图像文件位于.cpp项目文件所在的同一个目录中。

代码语言:javascript
复制
 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);
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 20:49:50

这个问题是由于忽略策略造成的,标签似乎无法扩展布局(在topFiller和bottomFiller展开之后):

代码语言:javascript
复制
  imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);

通过移除setSizePolicy()或使用展开来尝试正常策略

代码语言:javascript
复制
imageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

另外,设置QLabel setScaledContents以使图像在手动调整视图大小时调整大小也是很好的:

代码语言:javascript
复制
imageLabel->setScaledContents(true);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48308777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档