c++ - 用 QImage 和 QRect 显示图像

标签 c++ image qt

我正在尝试使用 Qt 制作游戏,但我无法加载图像。

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
image.load("F:/My Workspace/sprite.png");
rect = image.rect();
rect.moveTo(5,5);
}

这是窗口的构造函数。图像不显示。我知道如何使用 QLabel 显示图像,但我想使用 QRect 功能以便移动图像。

最佳答案

事情不是这样的。图像没有显示,因为您没有做任何会显示它的事情。而您从 image.rect() 获得的 rect 只是一组数字。它与图像没有任何关系,因此无论是否显示,更改它都不会改变图像。

这里有四种方法可以做你想做的事:

  1. 覆盖 paintEvent(QPaintEvent*),并使用 QPainterdrawImage 之一在您想要的位置绘制图像例程。
  2. 使用 QLabel,设置其图标,并使用布局将其放置在您想要的位置。
  3. 使用任何类型的QWidget,并设置style sheet与背景图像。同样,使用布局(或绝对定位)将其放置在您想要的位置。
  4. 使用Graphics View如果您需要大量此类元素,则可以使用框架。

根据您的具体要求,还有一些其他变体。查看painting examples , 和 QPainter文档。

关于c++ - 用 QImage 和 QRect 显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8953871/

相关文章:

c++ - Windows 中的 wxwidgets 错误

c++ - 文件关闭通知

qt - 文件通过另一个进程更改后如何刷新 QTreeView 中的 QFileSystemModel?

c++ - 如何在 Qt 中更改窗口的标题?

c++ - GetDC ReleaseDC 特定上下文中的高 CPU 使用率

html - CSS:在 Chrome 中显示绝对定位元素

python - 如何在 python 中解析数据 uri?

html - 两个图像在相同代码下以不同大小显示

c++ - 了解 qthread 子类的运行方法和线程上下文

C++增强猫