繁体   English   中英

在QT框架中设置QLabel的像素图

[英]Setting the pixmap of a QLabel in QT framework

我的问题主要是围绕两个UI文件,Form.ui和Form1.ui:

在Form中,我有多个QLabel(默认情况下设置了png图片,因为我们有很多图片,我们只能显示其中的一小部分),每个QLabel小部件都有一个按钮。 单击此按钮后,form1应该出现一个带有较大QLabel的大图,该QLabel显示了在很大程度上单击了该用途的图片。void Form :: ButtonPic1()应该处理click的事件,它将显示Form1的一个实例,并且应该将Form1的Qlabel图片设置为test.png

编辑:

所以这是form.cpp

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


}

Form::~Form()
{
    delete ui;
}
void Form:: ButtonPic1()
{
    QPixmap  mypix  (":/karim/test.png");



       Form1* f= new Form1();
         f->setLabelPixmap(mypix);
         f->showFullScreen();
         f->raise();
         f->activateWindow();
         this->close();

}

这是Form1.cpp

#include "form1.h"
#include "ui_form1.h"

Form1::Form1(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form1)
{
    ui->setupUi(this);
}

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

void setLabelPixmap ( const QPixmap &  pic ) {

  Form1.ui->labelk->setPixmap(pic);


}

这是头文件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();
    void setLabelPixmap(const QPixmap &);

private:
    Ui::Form1 *ui;
};

#endif // FORM1_H

我遇到了这个错误:(已编辑)

..\Project\form1.cpp: In function 'void setLabelPixmap(const QPixmap&)':

所以我该如何解决这个问题...我想从Form设置form1的Qlabel,还是应该在From1中以某种方式进行呢?

编译器说ui->Form1不起作用,因为ui指向的对象中没有Form1

这可能是因为您拼错了它(form1,From1,form,Form2?),或者因为ui并未指向它应该指向的对象。

语句“ ui-> Form1”假定您在设计器中添加了“ form”中称为Form1的某些内容。 从您的解释和似乎并非如此的代码。 我想你想要的是

Form1* f= new Form1();
f->ui->labelk->setPixmap(mypix);  // Setting the png to the label inside Form1
f->showFullScreen();
...

这将为您要显示的新Form1中的标签设置图像。

但是,通常不将ui指针公开。 有点不好的做法。 因此,我建议您在Form1类中创建一个公共方法,例如

void  setLabelPixmap ( const QPixmap & )

并像显示之前一样传递像素图。

f->setLabelPixmap(mypix);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM