일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Linux
- Openswan
- 루비
- ubuntu
- 드라이버
- VMware
- AWS
- docker
- docker-compose
- RUBY
- driver
- ssh command
- docker registry
- Chef
- window size
- sudo
- 패키지
- 우분투
- VIM
- 도커
- QT
- opsworks
- 방화벽체크
- 리눅스
- ssh
- port
- DevOps
- VPN
- golang
- docker container
- Today
- Total
구리의 창고
QT Programming - 시그날 통과, 전달 시키기 본문
QT에 있는 SIGNAL SLOT을 쓰다보면 !! signal을 다른 개체로 통과시켜야 하는 경우가 있다.
아래와 같이 다이얼로그 위에 버튼이 있고 엔터를 치면 clicked() 시그날이 발생한다고 하자.
그렇다면 버튼이 발생시키는 시그날은 사실상 다이얼로그 밖에 알 수 없다.
이 때 발생한 시그날을 다른 슬롯에 연결하기 위해선 적절히 QObject::connect를 해줘야한다.
처음 생각한 방법은
Dialog.cpp
Controller.cpp
이런 구조였다... 함수를 한 번더 거쳐서 시그날을 발생시키는 상당히 귀찮은 작업이다. 하지만 검색하다보니 아래와같이 간단한 방법을 알아냈다.
Dialog.cpp
보통 SLOT이라고 생각되는 부분에 SIGNAL을 써주면 작동하는 것이다.
아래와 같이 다이얼로그 위에 버튼이 있고 엔터를 치면 clicked() 시그날이 발생한다고 하자.
그렇다면 버튼이 발생시키는 시그날은 사실상 다이얼로그 밖에 알 수 없다.
이 때 발생한 시그날을 다른 슬롯에 연결하기 위해선 적절히 QObject::connect를 해줘야한다.
처음 생각한 방법은
Dialog.cpp
QObject::connect(pushButton, SIGNAL(clicked()), this, SLOT(passClicked()));
void Dialog::passClicked()
{
emit pushClicked();
}
Controller.cpp
QObject::connect(dialog, SIGNAL(pushClicked()), this, SLOT(showMessage()));
void Controller::showMessage()
{
QMessageBox::warning(this, "title", "helloworld");
}
이런 구조였다... 함수를 한 번더 거쳐서 시그날을 발생시키는 상당히 귀찮은 작업이다. 하지만 검색하다보니 아래와같이 간단한 방법을 알아냈다.
Dialog.cpp
QObject::connect(pushButton, SIGNAL(clicked()), this, SIGNAL(pushClicked()));
보통 SLOT이라고 생각되는 부분에 SIGNAL을 써주면 작동하는 것이다.
'QT' 카테고리의 다른 글
QT Programming - 윈도우에서 사운드 재생하기 (알람) (0) | 2012.01.03 |
---|---|
QT Programming - plugin 포함 배포하기 (qsqlite, qgif...) (0) | 2012.01.02 |
QT Programming - QDialog 의 ESC(escape) 버튼 처리 (0) | 2011.10.04 |
QT Programming - QModelIndex 에서 item 정보 가져오기 (0) | 2011.09.06 |
QT Programming - QTableView column width 변경 (0) | 2011.09.06 |
Comments