티스토리 뷰

Qt 강좌5 시그널과 슬롯(Signals And Slots)


New Project 클릭.


Qt Widgets Application 클릭.


Name : SignalsAndSlots 


Next 클릭.


Next 클릭.


Finish 클릭.



위와 같이 생성됩니다. 



UI 화면을 선택합니다. 


프로그래스바(Progress Bar)를 ui화면에 드래그합니다. 


호리존탈 슬라이더(Horizontal Slider)를 선택해서 ui화면에 드래그합니다. 


프로그레스바와 슬라이더를 키보드에서 Ctrl 버튼을 눌러서 모두 선택합니다. 


그리고 UI 위의 작은 버튼 메뉴중에서 Layout Vertically를 클릭해주면 프로그레스바와 호리존탈 슬라이더바가 빨간색 선으로 한꺼번에 묶이게 됩니다. 

마우스로 드래그해서 보기 좋게 키우세요. 



ui화면 위의 Edit Signals/Slots 버튼을 클릭합니다. 



아래쪽에 배치한 슬라이더바를 먼저 선택합니다. 


그리고 마우스로 프로그래스바쪽으로 드래그하면 빨간색 화살표가 생겨요.  


그리과 위와 같은 Configure Connection 화면이 나옵니다. 


여기서 아래에 있는 체크박스 Show signals and slots inherited from QWidget 를 체크해요. 

그리고 valueChanged(int)를 선택합니다. 


그리고 오른쪽 리스트박스에서 setValue(int)를 선택합니다. 

그럼 horizontalSlider - valueChanged(int)  와 progressBar - setValue(int) 가 시그널과 슬롯의 관계가 되었습니다.

슬라이더바 값을 변경하면 그대로 프로그래스바 값을 똑같이 변경하게 됩니다. 

 


위와 같은 화면이 나옵니다. 


그리고 컴파일 합니다. 


아래에 있는 슬라이더바를 마우스로 움직여봅니다. 

그럼 프로그레스바가 따라서 움직입니다. 


시그널과 슬롯의 관계를 삭제해줍니다. 


이번에는 코딩으로 시그널과 슬롯의 관계를 만들어 보겠습니다. 


왼쪽에 있는 Edit 버튼을 누르면 소스파일들을 볼 수 있습니다. 

그리고 mainwindow.cpp 파일을 선택합니다 .


그리고 ui->setupUi 아래에 다음과 같이 코딩합니다. 

connect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));


역시 슬라이더바와 프로그레스바과 시그널과 슬롯이 되어 동시에 움직입니다. 

만약 시그널과 슬롯을 해제하는 코딩을 하고 싶으면 connect 대신에 disconnect를 이용하면 됩니다. 

disconnect(ui->horizontalSlider,SIGNAL(valueChanged(int)),ui->progressBar,SLOT(setValue(int)));



댓글
최근에 달린 댓글
글 보관함
«   2024/05   »
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
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글