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
no image
QT - 기본 코드 살펴보기
들어가기 앞서프로젝트를 Widget 형태로 생성했으면 아래와 같은 형태로 나오게 된다.이는 기본 QT 응용프로그램을 구성하는 파일로 이 파일에 대해 살펴보겠다. mainwindow.hMainWindow 클래스의 헤더파일이다. 이 파일은 MainWindow 파일을 정의한다.// 헤더 파일의 중복 포함을 방지하기 위해 전처리기 지시문을 사용한다.// 헤더 파일의 내용을 한 번만 포함하도록 보장한다.#ifndef MAINWINDOW_H#define MAINWINDOW_H// QMainWindow 클래스의 헤더 파일을 포함한다.#include // QT 네임스페이스를 QT_BEGIN_NAMESPACE로 열고 QT_END_NAMESPACE로 닫는다.QT_BEGIN_NAMESPACEnamespace Ui { cla..
2024.07.05
QT - 프로그래밍의 시작
QT란?QT는 애플리케이션 프레임워크로써 리눅스, MS윈도우, 맥 OS X, 안드로이드, IOS, 블랙베리, 심비안, 타이젠, 욜라 등 모바일 서비스나 임베디드 리눅스, Windows CE같은 임베디드 영역까지 지원하는 크로스플랫폼 프레임워크이다. QT는 GUI프로그램을 쉽게 제작할 수 있도록 풍부한 위젯들과 화려한 인터페이스를 지원C++ 기반이기 때문에 C기반인 GTX+나 다른 툴킷들 보다 사용이 쉽고, 완전 객체지향을 지원하므로 프로그램의 확장이 쉽고 컴포넌트 프로그래밍이 가능하다. GUI를 보다 쉽게 만들 수 있도록 QML 언어를 제공한다. 오픈소스로 관리되는 다른 리눅스용 툴킷들은 문제 발생 시 해결할 주체가 없는 문제가 있지만, Qt는 The Qt Company에 의해 관리되므로 개발 도구나 문..
2024.07.05
no image
자바 [Algorithm] 투포인터 - 백준 11728 배열 합치기
1. 문제 2. 접근법이 문제는 정렬로 간단하게 풀 수 있다.int[] arr = new int[N+M]으로 선언하고 arr배열에 A의 배열과 B 배열의 값을 넣고Arrays.sort를 사용하면 쉽게 풀리지만 투포인터를 공부해야 하기 때문에 투포인터로 푼다. 1. A의 배열의 포인터와 B의 배열의 포인터를 선언2. A의 값과 B의 값을 비교하여 오름차순으로 result 배열에 넣는다.3. 예제 2번처럼 둘의 배열의 크기가 같지 않아 어느 배열의 뒷 값들이 남을 수 있기에 이를 처리한다. 3. 코드package week10;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.u..
2024.06.09
no image
자바 [Algorithm] 투포인터 - 백준 2018 수들의 합 5
1. 문제 2. 접근법투포인터 문제로 start와 end 변수를 선언하고sum과 count를 1로 설정한다. 그 이유는 15일때 1가지가 있으므로 1로 설정 1. sum == N일때end++, sum+=end, count++ 2. sum > N 일때sum -= start, start++ 3. sum end++, sum+= end  3. 코드package week10;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Baek2018 { public static void main(String[] args) throws IOException { Buffered..
2024.06.09
no image
자바 [Algorithm] 이분탐색 - 백준 20444 색종이와 가위
1. 문제   2. 접근법색종이를 N번 잘랐을 때, K개의 색종이를 만들어 낼 수 있는가? 가로로 X번, 세로로 Y번을 자르면 (X+1) * (Y+1) 개의 색종이가 생기게 된다. 가로로 색종이를 자를 횟수를 X라고 하면 세로로 색종이를 자를 횟수는 N-X가 된다. 즉 (X+1) * (N-X+1) = K를 만족하는 X값을 찾는다. 이분탐색을 진행하기 위해 mid = x y = N-x  3. 코드package week09;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Baek20444 { public sta..
2024.06.06
no image
자바 [Algorithm] 이분탐색 - 백준 11687 팩토리얼 0의 개수
1. 문제  2. 접근법0이 만들어지는 조건은 2*5가 존재할 때 0이 만들어진다.2는 2의 배수마다 생성되므로 5의 개수보다 항상 많아 5의 개수에 따라 0의 개수가 정해진다.5! = 120 - 2^3 * 3 * 5 : 1개10! = 3628800 = 2^8 * 3^4 * 5^2 * 7 : 2개소인수분해로 5의 개수를 구하면 된다 3. 코드package week09;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Baek11687 { public static void main(String[] args) throws IOException { Buffer..
2024.06.05