Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Image.network
- node.js
- CrossAxisAlignment
- Row Widget
- Networking
- Row
- Cached Image
- Flutter 앱 배포
- sqlite
- Snackbar
- 반석천
- ListView.builder
- Hello World
- Flutter 예제
- navigator
- ListTile
- Column Widget
- MainAxisAlignment
- HTTP
- flutter
- Flutter 강좌
- listview
- AppBar
- WillPopScope
- InkWell
- Scaffold
- Load Image
- Flutter Example
- FutureBuilder
- Flutter Tutorial
Archives
- Today
- Total
꿈꾸는 시스템 디자이너
QT 변수명 동적 할당(Dynamic variable naming in QT) 본문
UI widget이 많은 QT GUI 프로그래밍을 할 때 골치 아픈 것 중에 하나가 UI widget의 네이밍이다.
- pbDevice1
- pbDevice2
- pbDevice3
- pbDevice4
- pbDevice5
위와 같은 식으로 QPushButton의 변수명을 할당했을 때 실제 로직 코드내에서 이를 for 문을 이용해서 제어하기가 귀찮아 진다.
이럴때 변수명을 for문의 index로 증가시키면서 사용하는 방법은 다음과 같다.
QString objName = ""; QLineEdit* obj = NULL; for(int i = 0; i < 6 ; i++){ objName.sprintf("leDevName%d",i+1); qDebug() << objName; obj = ui->centralWidget->findChild<QLineEdit*>(objName); if(obj){ objName.sprintf("Sensor#%d",i+1); ((QLineEdit*)obj)->setText(objName); } } |
GUI 상에 QLineEdit 객체를 6개 선언하고 그 이름은 leDevName으로 시작해서 1번부터 6번까지 할당했다.
로직내에서는 for문을 통해 index값을 증가시켜가며 leDevName1부터 leDevName6번까지 테스트를 설정하고 싶은 경우,
sprintf() 함수내에 %d 키워드를 통해서 변수명을 변경시켜 가면서, findChind() 함수를 통해 해당 이름의 변수를 찾아 setText() 함수로 텍스트를 설정하는 예제이다.
인터넷 상에서는 sprintf() 함수내에 "ui->" 코드까지 직접 대입하여 이용하는 예제들이 있는데 QT4.8과 QT5.x 버전에서는 정상 동작하지 않았고 findChile()함수를 호출할때 "ui->contralWidget"을 앞에 대입해서야 정상 동작하는 것을 확인했다.
'Development > Qt' 카테고리의 다른 글
간단한 JSON 예제 (0) | 2016.05.24 |
---|---|
HTML의 javascript단에서 QT 슬롯 함수 호출 방법 (0) | 2015.12.02 |
QQuickWidget 사용법 (1) | 2015.11.26 |
QML간의 fuction 호출(Signal/Slot) (0) | 2015.11.25 |
Qt5에서 QtGui를 include해도 위젯들을 사용할 수 없는 경우 (0) | 2015.09.03 |
Comments