음.. 일단 분석한 내용으로는..
signal은 껍데기 이고 Q_OBJECT를 본 moc가 알아서 생성해서
slot과 연결을 해주는 듯하다
아래 코드를 보면 signals: 에는 프로토타입만 있고 실제로 구현은 보이지 않으며
connect를 보면 signal과 slot은 거의 동일한 함수 형태를 지니고
인자를 넘겨받게 되는 구조로 되어있다.
[링크 : http://qt-project.org/doc/qt-4.8/tools-customtypesending.html]
[링크 : http://qt-project.org/wiki/Qt_for_beginners_Signals_and_slots]
[링크 : http://qt-project.org/wiki/Qt_for_beginners_Signals_and_slots_2]
[링크 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/QT_Whitepaper]
signal은 껍데기 이고 Q_OBJECT를 본 moc가 알아서 생성해서
slot과 연결을 해주는 듯하다
아래 코드를 보면 signals: 에는 프로토타입만 있고 실제로 구현은 보이지 않으며
class Window : public QWidget
{
Q_OBJECT
public:
explicit Window(QWidget *parent = 0);
signals:
void counterReached();
private slots:
void slotButtonClicked(bool checked);
private:
int m_counter;
QPushButton *m_button;
}; |
connect를 보면 signal과 slot은 거의 동일한 함수 형태를 지니고
인자를 넘겨받게 되는 구조로 되어있다.
Window::Window(QWidget *parent) : QWidget(parent)
{
// Set size of the window
setFixedSize(100, 50);
// Create and position the button
m_button = new QPushButton("Hello World", this);
m_button->setGeometry(10, 10, 80, 30);
m_button->setCheckable(true);
// Set the counter to 0
m_counter = 0;
connect(m_button, SIGNAL(clicked(bool)), this, SLOT(slotButtonClicked(bool)));
connect(this, SIGNAL(counterReached()), QApplication::instance(), SLOT(quit()));
}
void Window::slotButtonClicked(bool checked)
{
if (checked) {
m_button->setText("Checked");
} else {
m_button->setText("Hello World");
}
m_counter ++;
if (m_counter == 10) {
emit counterReached();
}
} |
아무튼.. 원칙(?)적으로는 각종 핸들러를 만들어주고 생성하고 연결해야 하나
그렇게 되면 코드가 막 꼬이는 것 처럼 보일수가 있기에
이를 간결하게 하기 위해서 moc를 통해 생성하는 구조로 추측된다.
그렇게 되면 코드가 막 꼬이는 것 처럼 보일수가 있기에
이를 간결하게 하기 위해서 moc를 통해 생성하는 구조로 추측된다.
[링크 : http://qt-project.org/doc/qt-4.8/tools-customtypesending.html]
[링크 : http://qt-project.org/wiki/Qt_for_beginners_Signals_and_slots]
[링크 : http://qt-project.org/wiki/Qt_for_beginners_Signals_and_slots_2]
[링크 : http://www.joinc.co.kr/modules/moniwiki/wiki.php/QT_Whitepaper]
'Programming > qt' 카테고리의 다른 글
Qt for Embedded Linux 와 VNC (0) | 2014.12.11 |
---|---|
qt dialog / webkit 연동 (0) | 2014.12.10 |
qt 프로젝트 파일 연관 (0) | 2014.11.20 |
QT font 관련 (0) | 2014.11.06 |
QT modules (0) | 2014.11.05 |