在Qt中编程设置QLabel的像元图(pixmap)

7
我们应该使用QLabel来展示图片。我们可以通过设置其pixmap属性直接在QtCreator中实现。
首先,我们应该创建一个资源文件,然后将图像添加到该资源文件中。要创建Qt资源文件,我们需要进入菜单:File > Qt > Qt Resource File。
我们可以使用Qt Creator来设置QLabel的图像...
但是我想根据用户的一些输入更改图片。
我尝试做以下操作:
#include "form1.h"
#include "form.h"
#include "ui_form.h"
#include "ui_form1.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    QPixmap * mypix = new QPixmap(":/karim/test.png");
    ui->label->setPixmap(mypix);
    delete mypix;
}

但是我遇到了这个错误。
..\Project\form.cpp: In constructor 'Form::Form(QWidget*)':

..\Project\form.cpp:12: error: no matching function for call to 'QLabel::setPixmap(QPixmap*&)'

c:\QtSDK\Simulator\Qt\mingw\include/QtGui/qlabel.h:123: note: candidates are: void QLabel::setPixmap(const QPixmap&)

可能出了什么问题?

4
由于您误解了setPixmap函数的签名,因此您应该先学习C++的基础知识。 - Sebastian Mach
1个回答

16

您尝试使用的方法的签名是:

setPixmap ( const QPixmap & )

但您正在传递指针。请尝试改用值。

QPixmap mypix (":/karim/test.png");
ui->label->setPixmap(mypix);

QObject 本来就应该在堆上创建,不是吗? - Tim
@OrcunC 当我用另一张图片更新图片时,之前的图片没有被清除。有什么办法在设置新图片之前清除pixmap吗? - Dewsworld
Dewsworld 我遇到了相同的问题...看起来父部件没有更新...如果你已经解决了,麻烦请回复 =) - fredcrs
好的,这是答案:https://dev59.com/Nm035IYBdhLWcg3wC7mf 谢谢。 - fredcrs
在编译步骤之前运行 qMake 确保您的资源正确添加后,ui->label->setPixmap(QPixmap(":/karim/test.png")); 就足够了。 - C--

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接