第一次使用Qt:如何显示图像?

jas*_*cks 2 c++ qt

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();

}
Run Code Online (Sandbox Code Playgroud)

从:

Qt jpg图像显示

它编译并运行但不显示图像.返回0等

然后我只是从那里搞砸了.我也很好奇:在Qt编辑器中,它们显示了磁盘上不存在的文件结构.它们有文件"Headers","Sources"和Resources,而在系统上它只是一个文件夹"projectname",其中包含一个文件夹中的所有文件.这只是为了视觉清晰度吗?

我正在使用的QtCreator版本是2.4.1运行Qt 4.7.4 64位.

我最终的目标是创建一个小部件,其中图片是一个可点击的图标,您可以在其中选择该图片并将其放置在更大的屏幕上,如瓷砖.

另一个问题:为什么Qt有像"QString"和"QChar"这样的东西?普通的c ++库有什么问题吗?

Mar*_*ett 5

如果您只想显示一个简单的图像,那么将Qlabel作为中心窗口小部件并调用setPixmap()将其传递给您的图像路径

"另一个问题:为什么Qt有像"QString"和"QChar"这样的东西?普通的c ++库有什么问题吗?"

是的,普通库存在很多问题 - 至少对于std :: string.
当Qt启动时,没有非常好的跨平台STL支持,标准库在Unicode上非常糟糕并且支持翻译.QString做得非常好 - 虽然我认为现代STL和boost的组合可能可以完成QString可以做的所有事情.

几乎所有的Qt类型都会自动引用计数,因此您几乎可以忽略它们的内存管理并自由传递它们.Qt可以做一些技巧,因为额外的MOC编译通道意味着它具有类似Java的内省,而标准C++则没有.

但一般来说,您可以自由使用标准C++类型(Qt:Qt类与标准C++)