It won't hurt to try

[C++/윈도우프로그래밍응용]29. 윈도우의 구성과 레이아웃 매니저 본문

C++/윈도우프로그래밍응용

[C++/윈도우프로그래밍응용]29. 윈도우의 구성과 레이아웃 매니저

yongki.doki 2021. 11. 16. 09:04

QPushButton 위젯의 사용

QPushButton은 사용자 입력을 받는 대표적인 위젯

main.cpp의 내용을 변경

  • QLabel 위젯을 QPushButton 위젯으로 변경
  • QPushButton 위젯은 리치 텍스트를 사용할 수 없다.
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[]) {
	QApplication a(argc,argv);
    QPushButton *quit = new QPushButton("Quit", 0);
    quit->resize(75,35);
    quit->show();
    
    return a.exec();
}

실행

시그널과 슬롯의 연결

Qt는 시그널과 슬롯이라는 개념으로 이벤트를 처리

시그널 : 마우스로 버튼을 할 때 발생

  • 어떤 일(이벤트)이 발생했다는 것을 알리는 역할

슬롯 : 사용자의 요구에 응답하는 이 코드

  • 특정 시그널과 연결되어서 사용자의 요구를 처리하는 역할

QObject::connect() 함수 : 시그널과 슬롯을 연결

QObject::connect(sender, SIGNAL(signal), receiver, SLOT(slot));
항목 내용
sender 시그널을 발생시킬 객체의 포인터를 지정
signal 첫 번째 매개변수로 지정된 객체(sender)가 발생시키는 시그널을 지정
receiver 시그널을 받을 객체의 포인터를 지정
slot 세번째 매개변수에 지정된 객체(receiver)에 정의된 슬롯을 지정

https://doc.qt.io/qt-5/qabstractbutton.html

 

QAbstractButton Class | Qt Widgets 5.15.7

QAbstractButton Class The QAbstractButton class is the abstract base class of button widgets, providing functionality common to buttons. More... Properties Public Functions Public Slots Signals Protected Functions Reimplemented Protected Functions Detailed

doc.qt.io

Qt는 C++로 만들어져 있어 부모 클래스를 상속

QPushButton위젯

  • QAbstractButton클래스를 상속
    →버튼의 기본적인 성질과 함수들을 상속
  • clicked() 시그널 사용

QApplication클래스

  • QCoreApplication클래스를 상속
  • quit() 슬롯 사용

QApplication클래스의 상속 형태

QPushButton과 시그널/슬롯

QPushButton의 clicked() 시그널을 사용

main.cpp의 내용을 변경

#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[]) {
	QApplication a(argc,argv);
    QPushButton *quit = new QPushButton("Quit", 0);
    quit->resize(75,35);
    quit->show();
    // quit가 clicked되면, a를 quit한다.
    QObject::connect(quit, SIGNAL(clicked()), &a, SLOT(quit()));
    
    return a.exec();
}

단어 정리

이벤트

컴퓨팅에서 이벤트(event)란 프로그램에 의해 감지되고 처리될 수 있는 동작이나 사건을 말한다.

대체로 이벤트는 프로그램 동작 과정과 함께 동시에 처리되도록 되어 있다.

즉 프로그램은 이벤트를 처리하기 위한 하나 이상의 전용 공간(또는 핸들러)를 가지게 되는데,

보통의 경우 이벤트 루프 라고 불리는 곳에서 이를 처리하게 된다.

300x250
300x250
Comments