Noob:如何显示图像我对此非常陌生,实际上才刚刚开始。我需要弄清楚如何在屏幕上显示图像。
首先,我尝试了:
源代码:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QPixmap qp = QPixmap("../images/tank2.bmp");
if(qp.isNull())
{
printf("Yes its null\n");
}
else
{
QGraphicsPixmapItem item(QPixmap("../images/tank2.bmp"));
scene.addItem(&item);
}
view.show();
return a.exec();
}
发自:
它可以编译并运行,但不会显示图像。返回0,依此类推
然后我就从那开始胡闹了。我还对一些事情感到好奇:在Qt编辑器中,它们显示了磁盘上不存在的文件结构。它们有文件"Headers“、"Sources”和“Resources”,而在系统上只有一个文件夹"projectname“,所有文件都在一个文件夹中。这仅仅是为了视觉上的清晰吗?
我使用的QtCreator版本是2.4.1,运行Qt 4.7.4 64位。
我的最终目标是制作一个小工具,其中的图片是一个可点击的图标,您可以选择该图片,并可以将其放在一个更大的屏幕上,如磁贴。
另一个问题:为什么Qt有"QString“和"QChar”这样的东西?普通的c++库有什么问题吗?
发布于 2012-08-16 03:46:25
像这样测试,它是有效的。别忘了创建qrc文件。
#include <QtGui/QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsPixmapItem>
#include "mainwindow.h"
#include <stdio.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsScene scene;
QGraphicsView view(&scene);
QPixmap qp = QPixmap(":/images/123.bmp");
if(qp.isNull())
{
printf("Yes its null\n");
}
else
{
printf("HAHA");
QGraphicsPixmapItem *item = new QGraphicsPixmapItem(QPixmap(":/images/123.bmp"));
scene.addItem(item);
}
view.show();
return a.exec();
}
下面是qrc文件:
<RCC>
<qresource prefix="/">
<file>images/123.bmp</file>
</qresource>
</RCC>
和.pro文件
QT += core gui
TARGET = testimage
TEMPLATE = app
SOURCES += main.cpp
RESOURCES += 123.qrc
发布于 2012-08-16 03:44:43
如果您只想显示一张简单的图像,那么创建一个Qlabel作为中心小部件,并调用setPixmap(),将其传递给您的图像路径
“另一个问题:为什么Qt有像"QString”和"QChar“这样的东西?普通的c++库有什么问题吗?”
是的,普通的库有很多错误--至少对于std::string是这样的。
当Qt启动时,没有很好的跨平台STL支持,标准库在Unicode和对翻译的支持方面也很差。QString在这方面做得很好--尽管我认为现代STL和boost的组合可能可以做QString能做的一切。
几乎所有的Qt类型都是自动引用计数的,所以你几乎可以忽略它们的内存管理,自由地传递它们。Qt还可以做一些技巧,因为额外的MOC编译传递意味着它具有标准C++所没有的Java式的自省。
但一般来说,您可以自由使用标准C++类型(Qt: Qt classes vs. standard C++)
发布于 2012-08-16 03:31:48
我想你的问题出在这里:
{
QGraphicsPixmapItem item(QPixmap("../images/tank2.bmp"));
scene.addItem(&item);
}
在你真正使用它之前,它就超出了你的范围。
我也很确定您的意思是要使用您之前在顶级作用域中加载的QPixmap。
一般来说,你想把你的问题限制在一个问题上……但是为了解决您的最后一个问题: QChar和QString允许Qt库对字符串做出几个假设。其中最明显的是QStrings有一个标准化的编码。
https://stackoverflow.com/questions/11980274
复制相似问题