开发在标签(控件)上显示图像的应用程序,点击该图像后,新图像将显示在其他标签(控件)中

时间:2017-02-03 09:29:17

标签: c++ qt

我正在开发 QT C ++ ,开发一个在标签(控件)上显示图像的应用程序,点击该图像后,新图像将显示在其他标签(控件)中。我创建了一个新项目: application-> QtWidget Application 。然后我选择 class Qdialog 。在项目文件中   - my_qlabel_mouseEvent.pro
并在标头文件夹中   - dialog.h   - my_qlabel.h 然后源文件夹有文件 1:dialog.cpp
2:main.cpp中
3:my_qlabel.cpp

然后在表单文件夹中 1:dialog.cpp。

当我使用基类 QLabel 添加新类my_qlabel 时,请在创建此项后输入信息: QWidget setPixmap 不起作用。它的显示错误错误是“在构造函数'Dialog :: Dialog(QWidget *)'类中my_qlabel没有名为setPixmap的成员”请解决此错误或将任何网站或其他来源提供给我。

**my_qlabel.cpp**

#include "my_qlabel.h"
#include <QPixmap>

my_qlabel::my_qlabel(QWidget *parent) : QWidget(parent)
{


}

void my_qlabel::mouseMoveEvent(QMouseEvent *)
{
    emit Mouse_Pos();
}

void my_qlabel::mousePressEvent(QMouseEvent *)
{
    emit Mouse_Pressed();
}

void my_qlabel::leaveEvent(QEvent *)
{
    emit Mouse_Left();
}



**main.cpp**

#include "dialog.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}


**dialog.cpp**

#include "dialog.h"
#include "ui_dialog.h"
#include "my_qlabel.h"
#include <QPixmap>

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

    QPixmap pix("E:/osld/andgate.png");

    ui->lblMouse->setPixmap(pix);

    connect(ui->lblMouse, SIGNAL(Mouse_Pressed()), this, SLOT(Mouse_Pressed()));
    connect(ui->lblMouse, SIGNAL(Mouse_Pos()), this, SLOT(Mouse_current_pos()));
    connect(ui->lblMouse, SIGNAL(Mouse_Left()), this, SLOT(Mouse_left()));


}

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

void Dialog::Mouse_current_pos()
{
    ui->lblMouse_Current_Event->setText("Mouse Moving");

}

void Dialog::Mouse_Pressed()
{
    ui->lblMouse_Current_Event->setText("Mouse Pressed");

}

void Dialog::Mouse_left()
{
    ui->lblMouse_Current_Event->setText("Mouse Left");

}

**dialog.h**

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
    Q_OBJECT

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

private slots:

    void Mouse_current_pos();
    void Mouse_Pressed();
    void Mouse_left();

private:
    Ui::Dialog *ui;
};

#endif // DIALOG_H



**my_qlabel.h**

#ifndef MY_QLABEL_H
#define MY_QLABEL_H

#include <QWidget>
#include <QMouseEvent>
#include <QEvent>
#include <QDebug>
#include <QPixmap>

class my_qlabel : public QWidget
{
    Q_OBJECT
public:
    explicit my_qlabel(QWidget *parent = 0);

    void mouseMoveEvent(QMouseEvent *ev);
    void mousePressEvent(QMouseEvent *ev);
    void leaveEvent(QEvent *);

signals:
    void Mouse_Pressed();
    void Mouse_Pos();
    void Mouse_Left();

public slots:
};

#endif // MY_QLABEL_H

0 个答案:

没有答案