728x90

Qt에서 QLabel을 클릭해서 이벤트를 발생 시키는 방법에 대해 소개하겠습니다.

 

QLabel 두 개로 이루어진 UI입니다. 여기서 위에 있는 label을 누르면 이벤트가 발생하도록 하겠습니다.

Mainwindow.h 파일입니다. eventFilter 함수를 추가해줍니다.

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMouseEvent>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    bool eventFilter(QObject *watched, QEvent *event);

private:
    Ui::MainWindow *ui;

};

#endif // MAINWINDOW_H

Mainwindow.cpp 파일입니다. label에 installeventFilter을 해줍니다.

 

eventFilter의 if문에 watched를 원하는 위젯, event에 마우스 클릭 이벤트를 설정해줍니다.

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->label->installEventFilter(this);
}

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

bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
    if(watched == ui->label && event->type() == QMouseEvent::MouseButtonPress)
    {

    }
    return QWidget::eventFilter(watched, event);
}

코드를 넣고 실행하고 label을 누르면 if 안에 넣은 코드가 실행이 되고 label2를 누르면 아무런 동작을 하지 않습니다.

 

 

728x90

'Programming > Qt' 카테고리의 다른 글

QPushButton 이미지 넣기  (2) 2020.04.14
Qt 커스텀 위젯 사용하기  (0) 2020.04.10
Qt 데이터베이스(maria db) 연동해서 사용하기  (0) 2020.03.13
Qt Tcp 소켓통신하기(서버)  (0) 2019.11.20
Qt QLabel에 사진 넣기  (0) 2019.11.07

+ Recent posts