이전 게시물
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget mywidget;
mywidget.show();
return a.exec();
}
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = 0);
~Widget();
private:
QPushButton *btn;
QString str;
public slots:
void slot_btn();
};
#endif
Widget(QWidget *parent = 0);
- QWidget*을 가질 수 있는 생성자를 정의
= 0
: 일반적인 경우, 부모 위젯의 주소와 같은 메모리의 특정 주소를 가리키는 포인터가 필요하지만 상위 위젯을 설정하고 싶지 않은 경우, = 0
으로 표시
int main(int argc, char *argv[])
- int argc : main()함수에 전달되는 데이터의 개수
- char *argv[] : main()함수에 전달되는 실제적인 데이터로 char형 포인터 배열로 구성
(첫 번째 문자열은 프로그램의 실행경로 => (argv[0] = 실행경로))
exec()
- 이벤트 루프에서는 내부 이벤트 및 운영 체제의 이벤트 (타이머 및 소켓 등)를 처리하는데 exec() 호출로 시작됨
- 이벤트 루프가 종료 (quit()) 될 때까지 exec() 함수는 반환되지 않으며, 일반적으로 exec() 함수는 main() 함수의 return으로 호출
#include "widget.h"
#include <QDebug>
Widget::Widget(QWidget *parent) : QWidget(parent)
{
setFixedSize(300, 200);
str = QString("Hello World");
btn = new QPushButton(str, this);
btn->setGeometry(10, 10, 100, 30);
connect(btn, &QPushButton::clicked, this, &Widget::slot_btn);
}
void Widget::slot_btn()
{
qDebug() << "Hello World button clicked!!";
}
Widget::~Widget()
{
}
connect(Signal이 발생하는 곳 , 발생Signal , Slot이 발생하는 곳, 발생Slot)
- 첫 번째 인자는 이벤트를 발생하는 오브젝트
- 두 번째 인자는 이벤트의 종류 (이벤트의 종류 : clicked, mouse over, released 등)
- 세 번째 인자는 이벤트를 받는 클래스 (Signal과 Slot과 connect를 한 클래스 내에서 사용했으면, this를 사용)
- 네 번째 이벤트의 이벤트를 받는 클래스의 헤더파일에서 SLOT키워드에서 정의 함수를 지정