我的问题主要是两个UI文件,Form.ui和Form1.ui:
在Form i中有多个QLabel(默认设置png pic,因为我们有很多图片,我们只能显示其中的一小部分)和每个QLabel小部件的按钮。 单击此按钮后,form1应显示一个大的QLabel,显示主要使用点击的图片... void Form :: ButtonPic1()应该处理click的事件,它将显示Form1的一个实例,它应该将Form1的Qlabel pic设置为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中设置???
答案 0 :(得分:2)
编译器说ui->Form1
不起作用,因为对象Form1
中没有ui
指向。
这可能是因为你拼错了它(form1,From1,form,Form2?),或者因为ui
没有指向它应该的对象。
答案 1 :(得分:1)
语句“ui-&gt; Form1”假设您在设计器中添加了名为Form1的“form”中的某些内容。从您的解释和您的代码看起来并非如此。我认为你想要的是
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);