mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QLabel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class PLabel;
class MainWindow : public QMainWindow
{
Q_OBJECT
public: MainWindow(QWidget *parent = nullptr);
~MainWindow();
private: Ui::MainWindow *ui;
PLabel * lbl1;
PLabel * lbl2;
PLabel * lbl3;
};
/*
* QWidget 에 있는 SIGNAL 중
* virtual void enterEvent(QEvent *event);
* virtual void leaveEvent(QEvent *event);
* 이 두가지 가상 메소드를 오버라이드 하기 위해 PLabel 클래스를 만들어 QLabel을 상속
*/
class PLabel : public QLabel
{
public:
PLabel(QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags());
// 상속
void enterEvent(QEvent *event) override;
void leaveEvent(QEvent *event) override;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPushButton>
#include <QLineEdit>
#include <QFileDialog>
#include <QGridLayout>
#include <QMouseEvent>
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGridLayout * main_layout = new QGridLayout;
ui->centralwidget->setLayout(main_layout);
// 라벨 생성
lbl1 = new PLabel;
lbl2 = new PLabel;
lbl3 = new PLabel;
// 크기 지정
lbl1->setFixedSize(100, 100);
lbl2->setFixedSize(100, 100);
lbl3->setFixedSize(100, 100);
// 최초 색상 지정
lbl1->setStyleSheet("background-color:green");
lbl2->setStyleSheet("background-color:green");
lbl3->setStyleSheet("background-color:green");
main_layout->addWidget(lbl1);
main_layout->addWidget(lbl2);
main_layout->addWidget(lbl3);
}
MainWindow::~MainWindow() { delete ui; }
// ******************** PLabel
PLabel::PLabel(QWidget *parent, Qt::WindowFlags f):QLabel(parent, f){}
// 오버라이드 한 메소드를 정의
// 마우스가 라벨위로 진입할때 해당 메소드가 호출
void PLabel::enterEvent(QEvent *event)
{ this->setStyleSheet("background-color:red"); }
// 마우스가 라벨에서 벗어날때 해당 메소드가 호출
void PLabel::leaveEvent(QEvent *event)
{ this->setStyleSheet("background-color:green"); }
'QT > QWidgets' 카테고리의 다른 글
[C++, QT] QFileDialog 파일이 위치한 경로 가져오기 (0) | 2021.09.02 |
---|---|
[C++, QT] QLabel 생성, 라벨명, 크기 설정 (0) | 2021.08.31 |