[Qt, C++] 폴더 선택하여 폴더 경로 얻기(getExistingDirectory)

목적 Qt Creator를 활용, 사용자가 폴더 오픈 버튼을 클릭하여 폴더를 선택하면 선택된 폴더 경로를 수집 테스트 환경 Windows 10 / C++ / Qt 5.15.2 / Qt Creator 4.13.3 버튼 생성 프로젝트 생성 Qt Creator를 실행하고 프로젝트를 생성한다. mainwindow.ui 버튼을 생성하기 위해 ui를 수정한다.  프로젝트 생성 시 별도로 수정했다면 아래 파일 이름은 다를 수 있다. mainwindow.ui를 … Read more

[Qt, C++] Table Widget 사용(QTableWidget)

테스트 환경 Window 10 / C++ / Qt 5.15.2 / Qt Creator 4.13.3 목적 Qt Creator를 활용, 테이블 위젯을 만든 후 버튼을 클릭할 시 테이블 위젯에 행 추가 테이블 위젯, 버튼 생성 프로젝트 생성 Qt Creator를 실행하고 프로젝트를 생성한다. mainwindow.ui ui에 버튼과 테이블 위젯을 드래그하여 추가한다. mainwindow.ui를 더블클릭 후 Push Button, Table Widget을 ui로 드래그한다. 버튼과 테이블위젯의 … Read more

[Qt, C++] 버튼 클릭하여 레이블 텍스트 수정(Push Button, Label, setText)

목적 Qt Creator를 활용, 버튼을 입력하면 텍스트 레이블에 지정한 문자열을 출력한다. 테스트 환경 Windows10 / C++11 / Qt 5.15.2 / Qt Creator 4.13.3 레이블 생성 프로젝트 생성 Qt Creator를 실행하고 프로젝트를 생성한다. 이후 나오는 프로젝트 설정은 일반적으로 별다른 설정 없이 Next를 선택하면 된다. mainwindow.ui 텍스트 레이블을 생성하기 위해 ui를 수정한다. 프로젝트 생성 시 별도로 수정했다면 … Read more

[Qt, C++] Thread 사용

테스트 환경 Windows10 / C++ / Qt 5.15.2 / Qt Creator 4.13.3 목적 Qt Creator를 활용하여 스레드를 사용한다. Thread 사용 Thread 생성 프로젝트를 우클릭하고 Add new를 선택한다. New File 창이 뜨면 C++ Class를 선택한다. Class name을 thread로 지정하면 Header file과 Source file은 자동으로 지정된다. 클래스 이름을 꼭 thread로 지정할 필요는 없으나 아래 예시를 따라가려면 thread로 하는것이 편하다. … Read more

[Qt, C++] 클래스간 데이터 이동(Signal, Slot, connect)

테스트 환경 Windows10 / C++ / Qt 5.15.2 / Qt Creator 4.13.3 목적 Qt Creator를 활용, MainWindow 클래스에서 Test 클래스로 데이터를 이동시킨 후 Test클래스에서 이동된 데이터를 출력한다. 클래스 간 데이터 이동 새 클래스 생성 프로젝트를 우클릭 후 Add new를 클릭한다. C++ Class를 선택한다. Class name을 입력한다. 클래스 이름을 입력하면 헤더 파일과 소스파일은 자동적으로 이름이 입력된다. 클래스 … Read more

[Qt, C++] 새 창을 띄우는 다이얼로그(Dialog) (Modal, Modeless)

목적 Qt Creator를 활용, 프로젝트를 실행 시 다이얼로그를 호출한다. 모달(Modal)과 모달리스(Modeless) 다이얼로그는 모달과 모달리스 두 종류가 있다. 모달은 다이얼로그가 종료될 때까지 메인 윈도우 창을 제어할 수 없다. 반면 모달리스는 다이얼로그가 실행 중에도 메인 윈도우 창을 제어할 수 있다. 테스트 환경 Windows10 / C++ / Qt 5.15.2 / Qt Creator 4.13.3 모달방식의 다이얼로그 실행 다이얼로그 생성 … Read more

[Kotlin] 코틀린 문자열 자르기(split, chunked)

코틀린 문자열 자르기 delimiter를 기준으로 문자열 자르기(split) split함수를 이용하면 delimiter를 기준으로 문자열을 자를 수 있다. 예를들어 delimiter가 쉼표라면 문자열을 쉼표를 기준으로 자른다. split의 리턴값은 List다. 위 인수 중 ignoreCase, limit는 생략 가능하며 생략시 기본값이 사용된다. 일반적인 경우는 delimiters만 지정하면 된다. ignoreCase, limit는 사용해본적이 없어서 아래 코드 주석으로 설명을 대체한다. 개수를 기준으로 문자열 자르기(chunked) 개수를 기준으로 … Read more

[Android] 안드로이드 버튼 배경 색 바뀌지 않는 증상

안드로이드 버튼 배경 색 바뀌지 않는 증상 안드로이드 버튼 위젯은 xml의 background 속성으로 배경 색을 변경할 수 있다. 그런데 배경색이 변경되지 않을 경우 테마의 MaterialComponents가 원인일 수 있다. MaterialComponents는 버튼 배경색을 default로 가지고 있어서 다른 색으로 변경이 안된다고 하는데, 자세히 알아본것이 아니라서 확실하진 않다. 어쨌든 내 경우 이 MaterialComponents가 원인이었다. 테마에서 MaterialComponents 대신 AppCompat로 변경하면 문제를 해결할 … Read more

[Android, Kotlin] Bottom Sheet Dialog 구현

Bottom Sheet Dialog Bottom Sheet Dialog는 하단에서 슬라이드 애니메이션으로 나타나는 다이얼로그다. 버튼을 선택시 BottomSheetDialog가 출력되고 BottomSheetDialog에서 Dismiss를 선택하면 다이얼로그가 사라지는 프로그램을 구현한다. 구현 themes.xml Bottom Sheet Dialog 뒤 액티비티를 반투명 처리하는 테마를 사용하기 위해 아래 코드를 추가한다. bottom_sheet_background.xml Dialog의 색, 모양 등을 정한다. Radius로 모서리를 라운딩처리한다. layout_bottom_sheet.xml 위에서 만든 bottom_sheet_background.xml을 배경으로 적용한다. Dialog에 텍스트뷰와 버튼을 … Read more