no image
QT - 네트워크 프로그래밍, socket
네트워크 프로그래밍이란?네트워크를 대상으로 입출력하는 프로그래밍을 의미한다.서로 다른 두 대 이상의 컴퓨터가 네트워크를 통해 데이터를 주고 받는 입출력 프로세스를 구현한 것이다. Socket이란?네트워크를 통해 데이터를 주고 받는 방법을 통신 규약에 맞게 함수로 구현해 놓은 것이다.이 함수들은 소켓의 생성, 연결, 데이터의 송수신 등의 작업 등을 구현 해놓은 API이다. 물론 Socket으로 네트워크 통신 기능을 구현하기 위해서는, 소켓의 생성, 만들어진 소켓을 통해 데이터를 주고 받는 절차에 대한 이해, 운영체제 및 프로그래밍 언어에 종속적으로 제공되는 소켓 API 사용법을 숙지해야 하지만, 개발자는 소켓의 구현만 고려하면 되는 프로그래밍 이점을 가진다. Socket Network Program 실행 ..
2024.07.12
no image
QT - Dialog(QInputDialog)
QInputDialog::getInt() & QInputDialog::getDouble()사용자로부터 값(integer, double)을 입력 받을 수 있다.헤더파일에 #include 를 해줘야 한다. widget.cpp#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); bool retValue; int i = QInputDialog::getInt(this, "put integer", "Percent:",25,0,100,1,&retValue); if(retValue){ qDebu..
2024.07.12
QT - Dialog
Dialog다이얼로그는 애플리케이션이 동작 중에 이벤트가 발생했을 때 사용자에게 메시지를 전달하기 위한 목적으로 사용된다.그리고 사용자로부터 입력 값을 받거나 여러 개 중 하나를 선택할 수 있는 GUI를 제공한다.다음 표는 QT에서 제공하는 다이얼로그 중 자주 사용되는 다이얼로그이다. 종류설명QInputDialog사용자로부터 값을 입력 받을 수 있는 다이얼로그QColorDialog특정 컬러를 선택할 수 있는 다이얼로그 QFileDialog파일 또는 디레곹리를 선택하는 GUI 인터페이스를 제공QFontDialog폰트를 선택하기 위한 다이얼로그QProgressDialog퍼센트와 같은 진행사항을 보여주기 위한 다이얼로그QMessageBox모달 방식의 다이얼로그
2024.07.12
no image
QT - Signal and Slot (3)
서론QSlider와 QSpinBox를 사용하여 connect를 연습해보자. horizontalLayout을 사용하여 총 3쌍을 배치하였다. widget.h#ifndef WIDGET_H#define WIDGET_H#include QT_BEGIN_NAMESPACEnamespace Ui { class Widget; }QT_END_NAMESPACEclass Widget : public QWidget{ Q_OBJECTpublic: Widget(QWidget *parent = nullptr); ~Widget();private: Ui::Widget *ui;private slots: void slider1_valueChanged(int value); void slider2_valueCh..
2024.07.12
no image
QT - Signal and Slot (2)
예제시그널이 발생하면 윈도우 상에 배치된 라벨의 텍스트를 출력하는 예제를 만들어 보자. widget.h의 SignalSlot 클래스...class SignalSlot: public QObject{ Q_OBJECTpublic: void setValue(int val){ emit valueChanged(val); }signals: void valueChanged(int newValue);private: int value;};...  Signal 함수signals: void valueChanged(int newValue);시그널 함수는 구현부가 없으며, 헤더에 정의부만 구현한다.위의 예제에서는 시그널 함수에 int 인자를 명시했지만, 이 인자는 시그널 발생 시 값을..
2024.07.12
no image
QT - Signal and Slot (1)
서론QT는 이벤트를 처리하기 위한 메커니즘으로 Signal과 Slot을 사용한다.예로 어떤 버튼이 클릭했다는 행위는 QT에서 Signal이라 한다.그리고 Signal이 발생하면 호출하는 함수를 Slot 함수라고 한다.Signal이라는 이벤트가 발생하면 Signal과 연결된 Slot 함수가 호출된다. Signal이란 어떤 상황에 발생하는 이벤트이다. QT의 모든 이벤트 처리는 Signal과 Slot이라는 메커니즘을 사용한다. 예를 들어 QT로 채팅 프로그램에서 A라는 사용자가 B라는 사용자에게 메시지를 보낸다고 가정해보자B의 입장에서 A에게로부터 메시지를 받은 행위는 Signal이라고 정의할 수 있다.그리고 메시지를 받은 Signal과 연결된 Slot 함수를 호출한다. QT는 모든 이벤트 처리를 Signa..
2024.07.11
no image
QT - Layout
서론QWidget 클래스의 setGeometry() 멤버 함수를 이용해 GUI 상에서 특정 X,Y 좌표로 위젯을 배치하게 되면 윈도우의 크기가 변경될 때 위젯의 위치가 변경되지 않는다.하지만 레이아웃을 이용하면 윈도우의 크기가 변경 될 때마다 동적으로 GUI 상에 위젯들의 크기도 동적으로 변하게 된다.윈도우의 크기가 변경되면 레이아웃은 위젯들을 최적의 위치에 정렬되어 일관된 크기의 모양을 유지할 수 있도록 해준다.다음 표는 QT에서 주로 사용되는 레이아웃 클래스들이다. 클래스설명QHBoxLayout위젯들을 가로 방향으로 배치QVBoxLayout위젯들을 세로 방향으로 배치QGridLayout위젯을 그리드 또는 바둑판 스타일로 배치QFormLayout위젯을 2열로 배치하는 형식 QHBoxLayoutQHBox..
2024.07.11
no image
QT - 계산기 만들기
서론QT의 구조와 slot&signal, 위젯들의 이해를 위해 간단한 계산기 프로그래밍을 해보자. UI윈도우가 제공하는 계산기 UI를 참고하였다. 진수 변환을 자주 사용하기 때문에 숫자를 입력하면 동적으로 진수 변환이 이뤄지게 하였다. Headers/mainwindow.h#ifndef MAINWINDOW_H#define MAINWINDOW_H#include QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACEclass MainWindow : public QMainWindow{ Q_OBJECTprivate : char operation_flag = 0; char reset_mode = 0; double first_n..
2024.07.11