【问题标题】:How to Display a "*.png" file on a UI in QT framework?如何在 QT 框架的 UI 上显示“*.png”文件?
【发布时间】:2011-10-18 03:57:12
【问题描述】:

我是 Qt 框架的新手...

我想在我的 Form1.ui 中显示一个 .png 图片, 所以我从小部件框中拖放了一个图形视图然后 我将 test.png 放在同一目录中(在项目文件夹内)

我在代码中做到了这一点

//Form1.cpp
#include "form1.h"
#include "ui_form1.h"

Form1::Form1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form1)
{
    ui->setupUi(this);
    ui->Pic1->setStyleSheet("background-image: url(test.png)");

}

Form1::~Form1()
{
    delete ui;
}



//Form1.h
#ifndef FORM1_H
#define FORM1_H

#include <QWidget>

namespace Ui {
    class Form1;
}

class Form1 : public QWidget
{
    Q_OBJECT

public:
    explicit Form1(QWidget *parent = 0);
    ~Form1();

private:
    Ui::Form1 *ui;
};

#endif // FORM1_H

它编译完美,但图片没有出现, 我做错了什么?

这是我的二维码:

【问题讨论】:

    标签: c++ qt user-interface png


    【解决方案1】:

    您应该用来显示图片的小部件是QLabel。您可以直接在 QtCreator 中通过设置其 pixmap 属性来执行此操作。

    正如其他人所说,您应该首先创建一个资源文件,然后将图像添加到该资源文件中。要创建 Qt 资源文件,请转到菜单:文件 > Qt > Qt 资源文件。

    编辑以编程方式进行:

    //names starting with : means that they are on a resource file, 
    //otherwise in the filesystem
    QPixmap * mypix = new QPixmap(":/karim/test.png"); 
    ui->your_label->setPixmap(mypix);
    delete mypix;
    

    【讨论】:

    • 亲爱的 hexa,谢谢你的回复,你能告诉我如何使用 Qlabel 以及如何正确设置 pixmap 吗?我真的很感激......,如果你想我可以发布更多我的代码,这样你就可以知道在哪里提供帮助......对于资源文件,我创建了一个资源文件,然后我打开了 karim.qrc,我添加了一个前缀“/karim”,我添加了一个 test.png 文件,所有这些将如何改变这个命令 ui->Pic1->setStyleSheet("background-image: url(:/test.png)");??
    • karim,只需将 QLabel 添加到表单中,然后转到其属性,向下滚动,在蓝色属性下,像素图是第三个。点击... 并从 /karim 前缀中选择 test.png。
    • 最后一个问题,如果我想在代码中更改它们怎么办?,稍后在我的项目中,我需要根据用户更改此图片...然后怎么办?跨度>
    • 检查我的编辑,我没有测试代码,但它应该是这样的:)
    • 这里的内存分配是不必要的。 ui-&gt;your_label-&gt;setPixmap(QPixmap(":/karim/test.png")); 也可以。
    【解决方案2】:

    如果您的资源中有 png,则可以更改您的背景图像:标签:

    ui->Pic1->setStyleSheet("background-image: url(:/test.png)");
    

    【讨论】:

    • 它没有成功,请注意我在 main.cpp 或标题中没有做任何事情。我应该在那里做点什么吗???对于资源文件,我创建了一个资源文件,然后我打开了 karim.qrc,我添加了一个前缀“/karim”并添加了一个 test.png 文件,以及所有这些将如何更改此命令 ui->Pic1-> setStyleSheet("背景图片: url(:/test.png)");??
    • 不需要是 :/karim/test.png 吗?
    • 或者可能在资源文件中放一个别名,这样图片就没有子路径了。
    【解决方案3】:

    您需要将图片添加到资源文件中:http://doc.qt.io/qt-5/resources.html

    【讨论】:

    • 亲爱的 fredg,我正在使用 Qt Creator,我做了一个资源文件 karim.qrc,然后我添加了 .png 文件,但仍然没有结果。这行代码正确吗? ui->Pic1->setStyleSheet("background-image: url(test.png)");
    猜你喜欢
    • 2012-01-14
    • 2011-02-28
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多