본문 바로가기

QT and Symbian26

QT v4.x QElapsedTimer 경과 시간 측정 방법 QElapsedTimer는 Qt 4.7부터 도입된 클래스로, 두 이벤트 사이의 경과 시간을 빠르게 측정할 수 있도록 설계되었습니다. QTime과 유사한 API를 제공하지만, 가능한 경우 단조(monotonic) 시계를 사용한다는 점에서 더 정확하고 안정적인 시간 측정이 가능합니다.주요 특징빠른 시간 측정: 밀리초 단위로 경과 시간을 측정할 수 있습니다.단조 시계 사용: 시스템 시간이 변경되어도(예: 사용자 수동 조정) 영향을 받지 않습니다.사람이 읽을 수 있는 시간으로 변환 불가: QElapsedTimer는 디버깅이나 성능 측정용으로 적합하며, 시각 표시에는 적합하지 않습니다.QElapsedTimer timer;timer.start();// 시간 소모가 큰 작업slowOperation();qDebug().. 2025. 6. 30.
QT v4.x 기반 TcpClient 예제 다음은 Qt 4.x 환경에서 동작하는 QTcpSocket 기반의 간단한 TCP 클라이언트 예제입니다. 앞서 제공한 서버 코드와 통신할 수 있도록 구성되어 있어요:#include #include #include class TcpClient : public QObject { Q_OBJECTpublic: TcpClient(QObject *parent = 0) : QObject(parent) { socket = new QTcpSocket(this); connect(socket, SIGNAL(connected()), this, SLOT(onConnected())); connect(socket, SIGNAL(readyRead()), this, SLOT(onReadyR.. 2025. 6. 30.
QT v4.x 기반 TcpServer 예제 Qt 4.x에서도 QTcpServer와 QTcpSocket을 사용하는 기본 구조는 Qt 5/6과 유사하지만, 람다 표현식과 일부 시그널/슬롯 연결 방식이 다릅니다. 아래는 Qt 4.x 호환 TCP 서버 예제입니다:.#include #include #include #include class TcpServer : public QObject { Q_OBJECTpublic: TcpServer(QObject *parent = 0) : QObject(parent) { server = new QTcpServer(this); connect(server, SIGNAL(newConnection()), this, SLOT(onNewConnection())); if (serve.. 2025. 6. 30.
싱글샷 타이머 사용 싱글샷 타이머 사용QTimer::singleShot(3000, this, SLOT(onSingleShot())); 이렇게 하면 3초 후에 onSingleShot() 슬롯이 한 번 호출됩니다. 2025. 6. 30.
QT v4.x를 기반으로 startTimer, killTimer 예제 Qt 4.x에서 startTimer()와 killTimer()를 사용하는 기본적인 예제를 소개할게요. 이 방식은 QObject의 기능을 직접 활용하는 저수준 타이머 방식으로, timerEvent()를 재정의해서 타이머 이벤트를 처리합니다.#include #include #include #include class MyWidget : public QWidget { Q_OBJECTpublic: MyWidget(QWidget *parent = nullptr) : QWidget(parent), timerId(0) { // 1초 간격으로 타이머 시작 timerId = startTimer(1000); // 1000ms }protected: void timerEvent(Q.. 2025. 6. 30.
QT v4.x Queue 사용 Qt 4.x에서는 QQueue 클래스를 사용해 선입선출(FIFO) 방식의 큐를 쉽게 구현할 수 있어요. 이 클래스는 QList를 기반으로 하며, 큐에 데이터를 추가하고 꺼내는 데 특화된 메서드를 제공합니다.#include #include #include int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); QQueue queue; // 데이터 추가 queue.enqueue(10); queue.enqueue(20); queue.enqueue(30); // 큐에서 데이터 꺼내기 while (!queue.isEmpty()) { int value = queue.dequeue(); .. 2025. 6. 30.
QT Plugins 폴더 Windows 배포 문제 이번에 작업을 하면서 QT가 설치 되지 않는 컴퓨터에서는 DLL을 모두 포함해서 배포를 해서 실행 해도 프로그램이 강제 종료되는 문제가 발생했다. 원인을 파악한 결과 Plugins 폴더를 함께 배포하지 않아서 발생한 것으로 확인 되었다. 그러나 문제는 Plugins 폴더를 실행 파일과 같은 경로에 추가해도 정상 작동을 하지 않는 것이다. 빌드를 할 때 Plugins 폴더 위치가 배포되는 컴퓨터에도 같은 위치에 존재해야만 정상 작동하는 것을 확인 했다. 빌드 할 때 관련 내용이 실행 파일에 포함되기 때문에 문제를 수정하기 위해서는 아래와 같이 소스에 추가를 해야 한다. QApplication a(argc, argv); #if defined(Q_OS_WIN32) //Windows 배포할 때 필요하다. a.a.. 2020. 7. 24.
Creator Full mode 닫는 단축키 Creator Full Screen mode 닫는 단축키이다.shortcut (CTRL+SHIFT+F11) 2015. 12. 31.
QT PostMessage 대체 사용 방법 고민 기존 프로그램에서 메뉴를 닫을 때(FormClose())가 진행 되면 현재 Dialog를 Delete 할 수 없기 때문에 PostMessage를 이용해서 MainMenuForm에서 ExitForm() 함수가 작동하도록 해서 Event() 흐름이 끝나고 사용한 Dialog(Form)을 삭제하게 했습니다.그러나 현재 QtTex3D에서는 Dilaog의 X버튼을 눌러 닫을 때 CloseEvent()함수를 오버로딩해서 사용하고 있는데 위의 내용과 마찬가지로 Dialog를 삭제할 수는 없습니다. MainMenuDialog에서 이런 문제점이 있었는데 이 때 QTimer::singleShot(50, mainMenuDialog, SLOT(exitDialog())); 를 이용하면 될 것 같습니다.QTimer::single.. 2015. 12. 30.