Qt/C++图像未出现在屏幕上
Qt/C++ image does not appear on screen
这是我尝试制作的 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);
}
问题是由于忽略策略而出现的,标签似乎无法扩展布局(之后或因为 topFiller 和 bottomFiller 展开(:
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
通过删除 setSizePolicy(( 或使用扩展来尝试使用普通策略:
imageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
另外,设置 QLabel setScaledContents 也很好,以便在您手动调整视图大小时图像将调整大小:
imageLabel->setScaledContents(true);
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 使用 SFML 和 C++ 将 Pixel 打印到屏幕上
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- Winapi:屏幕截图未显示在窗口中
- 如何在快板的屏幕中显示子位图的绘制?
- 按回车键后输出屏幕关闭
- 要在屏幕上绘制一些小瓷砖,我应该使用 QQuickItem 还是 QQuickPaintedItem?
- SFML 向下移动时如何围绕屏幕中心旋转?
- 截取屏幕截图后程序卡住
- C++鼠标单击时的屏幕截图不起作用
- 屏幕插入运算符<<的运算符过载问题
- 获取网格中心的屏幕位置
- SFML 中的字体.信息不显示在屏幕上.显示的不是信息,而是点
- 如何在屏幕上环绕x和y?
- GetDIBits 在屏幕捕获函数中多次迭代后返回零
- OpenGL ES 2.0将纹理绘制到屏幕上是行不通的
- GTKMM:拍摄绘图区域的屏幕截图?
- OpenGL - 添加第二个着色器属性会导致空白屏幕
- 使用 C++将文本光标移动到屏幕中不可见的行