본문 바로가기
Qt QDialogButtonBox connect 이벤트 예제 소스, signal slot emit Qt QDialogButtonBox connect 이벤트 예제 소스, signal slot emit Qt Designer - Buttons - Button Box 위 그림처럼 『Button Box를 ui에 추가』했을 때 이벤트 설정하는 방법입니다. Qt5 이전, 이후 버전으로 구현 소스를 나눌 수 있습니다. Qt5 이전 버전 12connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));cs connect는 다들 아시다시피 Qt5.3 이후로 획기적인 변화가 생겼죠. 그래서 Qt5 이전 버전을 쓰신다면 위와 같이 예전 스타일로 사용하시면 됩니다. Q.. 2019. 2. 21.
Qt4 -> Qt5 업그레이드 차이 6가지 (우분투 리눅스 기준) pro에서 배포 Qt4 -> Qt5 업그레이드 차이 6가지 (우분투 리눅스 기준) pro에서 배포 출처 : Qt4 → Qt5 プログラム移行注意点 [링크] Qt4와 Qt5의 차이를 일부 정리한 포스트입니다. 아래 사항을 수정하면 대부분 정상적으로 빌드될 것입니다. 1. xxxx.pro Qt4 : QT += core gui network webkit Qt5 : QT += core gui network webkitwidgetsgreaterThan(QT_MAJOR_VERSION, 4): QT += widgets 2. QApplication 선언 Qt4 : #include Qt5 : #include 3. Local 데스크탑 트리 Qt4 : QDesktopServices::storageLocation(QDesktopServices.. 2018. 9. 18.
Qt 프로그래밍 Errors: cannot allocate an object of abstract type '???' Qt 프로그래밍 Errors: cannot allocate an object of abstract type '???' 에러 메시지 - Errors: cannot allocate an object of abstract type '???' pure 스타일의 가상 함수를 만들어 사용 중이었는데, 자꾸 저런 에러가 뜨더라. 부모 클래스의 가상 함수(pure( = 0))를 구현하지 않은 자식 클래스는 객체 생성이 안 된다. 분명히 구현이 다 되었음에도 구현되지 않았다는 에러가 뜨길래 혹시나 해서 폴더를 뒤져봤다. 아이고... 이런 세상에... Command.h 파일 이 두 개 다. 하나는 대문자로 시작하고 하나는 소문자로 시작하네. Qt 프로그래밍 에로 사항이 이것이다. 회사 내규상 파일명은 대문자로 시작해야 하.. 2018. 9. 11.
[Qt QTabWidget] 탭 삭제하는 방법 (QWidget) [Qt QTabWidget] 탭 삭제하는 방법 (QWidget) 도대체 어떻게 삭제하나 방법을 몰라 한참 헤멨네요. Qt Designer에서 제공하는 View, Settings 등에선 삭제하지 못하고 마우스 오른쪽 클릭을 해서 지워야 합니다. 아래 그림 보시죠. QTabWiget로 만든 탭 컨테이너에서 마우스 오른쪽 클릭하면 메뉴가 뜹니다. 여기서 Page 1 of 2 -> Delete를 차례로 선택하면 탭을 삭제할 수 있습니다. Page 1 of 2라는 뜻은 2개의 탭 중에 첫 번째 탭이란 뜻으로 탭이 10개라면 Page 1 of 10이라고 뜨겠죠? Qt Designer에서는 웬만하면 마우스 오른쪽 눌러서 메뉴를 확인해 보세요. 제 경험상 그게 빠르네요. Qt 디자이너는 알고 보면 다루기 되게 쉽고 사.. 2018. 7. 15.
[Qt프로그래밍] QToolBar(툴바)에 QComboBox(콤보박스) 추가 예제 [Qt프로그래밍] QToolBar(툴바)에 QComboBox(콤보박스) 추가 예제 Qt MainWindow에 추가한 툴바에는 action 요소만 삽입됩니다. Qt Designer에서는 QToolBar에 action 요소 외의 다른 위젯은 추가할 수 있는 메뉴를 지원하지 않는 게 원인입니다. 그래서 Qt 디자이너에서는 콤보박스(QComboBox) 등 위젯을 추가하지 못하니 소스 코드에서 직접 위젯을 추가해야 합니다. 코드로 추가 / 삭제를 해야 한다는 의미인데, 이 포스트에서는 QToolBar에 위젯 중 하나인 QComboBox를 추가하는 예를 소개합니다. 우선 Qt Designer에서 Form을 생성합니다. 저는 이 예제에서 Main Window를 선택했습니다. 다른 폼을 선택해도 구현해야 할 소스 코드.. 2018. 7. 7.
[Qt 5 프로그래밍] connect 함수, signal slot 변경 사항 [Qt 5 프로그래밍] connect 함수, signal slot 변경 사항 Qt5로 업데이트되면서 connect 함수 구현 문법이 수정되었습니다. Qt 공식 홈페이지에서 관련 사항을 확인해 볼 수 있습니다. 공식 홈페이지 - New Signal Slot Syntax in Qt 5 [링크] Qt5 미만에서는 아래처럼 signal slot 이벤트 함수를 구현했었습니다. 1234connect(sender, SIGNAL(valueChanged(QString,QString)), receiver, SLOT(updateValue(QString)));cs 반드시 SLOT에 해당하는 함수를 따로 구현하거나 해당 클래스에서만 처리해야 하는 불편함이 있었죠. 하지만, Qt5에서는 아래처럼 유연한 형태로 변경되었습니다. 1.. 2018. 5. 24.
리눅스 시간 설정 (Qt 프로그래밍 팁), 그냥 RTC를 다세요 리눅스 시간 설정 (Qt 프로그래밍 팁), 그냥 RTC를 다세요 리눅스 시간 설정 소스 코드 - SystemTimeEditor.tar.gz [링크] 소스는 아래와 같이 구성할 수 있습니다. system() 함수에 QString 변수를 넣어주면 됩니다. (07월 | 16일 | 13시 | 22분 | 1984년) 월, 일, 시, 분, 연도 순이라 조금 헷갈리긴 해요. 1234567891011QString current_time_ = QDateTime::currentDateTime(). toString("MM월 dd일 - hh:mm:ss").toUtf8().constData(); qWarning() 2018. 1. 16.
[Facade 패턴] Qt 프로그래밍, TCP Client 소스 예제 [Facade 패턴] Qt 프로그래밍, TCP Client 소스 예제 디자인 패턴 Facade 예제 : TcpClient.tar.gz [링크] TCP 소스에서 1:1 기반과 1:N 기반의 환경이라면 구성이 달라질 수밖에 없습니다. 어떻게 해야 소스 코드 변경을 최소로 줄이며 많은 클라이언트(또는 서버)와 통신이 가능한가, 라는 생각에서 출발한 디자인 패턴(Facade 패턴) 예제입니다. 1:1 환경보다는 N:N 환경의 어떤 부분에서도 가능토록 꾸며봤습니다. tcp client 소스 소개합니다. 서버 - 예제 - N개의 클라이언트 1. tcpdemo (main) 12345worker_ = new Worker(); QTcpSocket *g_se = new QTcpSocket();worker_->AddSock.. 2018. 1. 11.
[Qt 프로그래밍] 자동 파일 삭제 프로그램 (C++) [Qt 프로그래밍] 자동 파일 삭제 프로그램 (C++) 주기적으로 특정 경로를 탐색하여 생성된 지 오래된 파일을 삭제하는 Qt 프로그래밍 샘플 코드다. 이 포스트에 포함된 샘플 프로젝트에선 2초 주기의 타이머가 구동된다. 이 타이머는 생성된 지 1일이 넘은 파일을 삭제하는 함수를 호출한다. 프로젝트 : Deletor.zip [링크] 아래 Qt 프로그래밍 코드의 kInterval과 kCreated 변수로 삭제 주기와 삭제할 대상 파일 정보를 변경할 수 있다. (kInterval은 타이머 구동 주기, kCreated는 생성된 지 며칠이 됐는지) 기본 컨셉은 이렇고, 실제 코드를 살펴본다. 특정 경로의 파일을 탐색하려면 몇 가지 include 요소가 필요하다. 12345#include // 파일 탐색 경로#i.. 2018. 1. 7.
[Qt 프로그래밍] Qt QWT 속성 이해하기 (Graph) [Qt 프로그래밍] Qt QWT 속성 이해하기 (Graph) Qt 프로그래밍을 편하게 돕는 라이브러리가 하나 있습니다. 윈도우의 OpenGL에 맞먹는 Qt의 QWT입니다. QWT는 버전 5부터 지원되는데 2D 그래픽 라이브러리 중에선 가장 편합니다. Qt 프로그래밍할 때, 그래픽 라이브러리 고민하지 마시고 무조건 QWT 선택하세요. QWT만큼 편한 Qt 라이브러리가 또 없습니다. 이 포스트에선 항상 헷갈리는 qwt의 속성들을 설명합니다. (Qt 프로그래밍 qwt는 qt에서 사용할 수 있는 그래픽 라이브러리 중 최고입니다.) 아래 그림을 살펴보죠. 가운데 중앙 - setTitle() : Qwt Plot를 띄웠을 때, Plot의 이름 설정.가운데 왼쪽 - setAxisTitle() : 왼쪽 영역 이름 설정(.. 2017. 12. 11.
[Qt GUI 프로그래밍] 트리뷰 사용 예제, QTreeView와 QFile 응용 [Qt GUI 프로그래밍] 트리뷰 사용 예제, QTreeView와 QFile 응용 Qt QTreeView와 QFile을 함께 사용한 GUI 프로그래밍 예제입니다. 우선 결과 화면부터 보여드릴게요. 제가 소개하는 소스는 특정 폴더의 ini 파일만 읽어 ini 내용을 트리뷰로 표현하는 것입니다. GUI 프로그래밍에서 자주 사용하는 것 중 하나인 트리뷰(QTreeView)는 부모와 자식 노드로 구성되는데요. ini 파일 이름은 부모 노드, ini 파일 내용은 자식 노드로 구성되어 있습니다. .ini 부모 노드(파일 이름) 아래에 자식 노드(ini 파일 내용)가 보이시죠? 아래 소개하는 소스는 위 Qt GUI 프로그래밍 트리뷰 소스입니다. 1234567891011121314151617181920212223242.. 2017. 9. 9.
Qt QMainWindow: No such file or directory Qt 에러 - FATAL ERROR : QMainWindow: No such file or directory Qt에서 GUI 프로그램을 제작할 땐, 항상 QMainWindow 클래스를 상속받는 과정이 필요합니다. 만약 아래처럼, QMainWindow 클래스를 참조하지 못할 경우 .pro 파일을 반드시 살펴봐야 하죠. 이건 Qt의 장점이자 단점이기도 한데, .pro 파일에 사용할 라이브러리를 기록해 두면 가독성이 높아지는 장점이 있습니다. 그렇지만 이곳에 라이브러리를 기입하지 않으면 아예 사용하질 못합니다. 대게 QMainWindow를 사용하지 못하는 경우도 이런 상황과 같아요. 일단, 에러 메시지부터 보시죠. In file included from /home/ubuntu/pcl/example/qt_vis.. 2017. 7. 26.