본문 바로가기

Qt

(9)
Qt deleteLater Qt Source에는 이렇게 되어었다. /*! Schedules this object for deletion. The object will be deleted when control returns to the event loop. If the event loop is not running when this function is called (e.g. deleteLater() is called on an object before QCoreApplication::exec()), the object will be deleted once the event loop is started. Note that entering and leaving a new event loop (e..
QT add network option QMake 사용 시에는 단순히 아래와 같이 추가해주면 되지만 cmake로 build  시스템 선택한 경우에는  find package와 link library를 모두 추가해야한다.Building with qmakeQT += network Building with CMakefind_package(Qt6 REQUIRED COMPONENTS Network)target_link_libraries(mytarget PRIVATE Qt6::Network)
숫자를 스트링으로 바꿀 때 컴마 붙이기 QLocale class는 locale에 따라 환율, 날짜, 시간 등의 숫자의 표기를 여러 행태로 변환해주는 기능을 가지고 있다. 임의로 원하는 국가의 코드를 사용하여 해당 locale로 데이터를 처리할 수고 기본적으로 App에서 설정된 locale은 QWidget::locale() 함수로 접근 가능하다. QLocale lc("en"); qDebug()
QML Plugin QmlType 생성 QML plugin 만들고 그 creator에서 참조하려면 다음과 같이 빌드 스텝에 추가해 준다. qml plugin 생성 후 설치과정이 포함되어야 qml plugin 으로써 제대로 동작될 수 있다. 해당 plugin을 사용하는 곳에서 QML2_IMPORT_PATH 혹은 실행되는 디렉토리에 import형식에 맞게 디렉토리가 구성되어 있으면 빌드는 가능하다. 하지만 Qt creator에서는 모듈을 찾을 수 없다는 메시지가 뜨거나 형식에 맞는 정보가 없다는 식으로 메시지가 뜬다. 이를 해결하려면 plugin 설치 시 qmltype 파일도 구성해 주어야 한다. 파일을 손으로 작성할 필요는 없다. 친절히 툴을 제공해 준다. "qmlplugindump" 이 유틸리티로 qmltypes를 생성할 수 있다. 아래 예제..
QT TextEdit Block & Char Formatting QT Text에서 block 및 character별로 format을 지정할 수 있다. 거기에 중심이 있는 것이 QTextCursor와 QCharTextFormat, QBlockTextFormat 이다. Block은 문단이라 보면 되고 커서가 있는 위치에서의 문단의 속성을 변경시킨다. character는 말 그대로 각각의 문자를 뜻한다. 우선 기본적으로 알아야할 개념이 있다. QTextCursor에서 anchor와 position 두가지이다 position은 커서가 있는 위치를 말하고 anchor는 마치 마우스로 text를 드레그해서 선택영역을 만들었을 때처럼 선택영역의 시작이 되는 시점을 말한다. 예를 들어 This의 T 앞에서 시작해 text의 끝까지 선택했다면 아래와 같이 anchor와 positio..
QT build static library QT creator로 static library를 만들 때 단순하게 Template 를 app이 아닌 lib로 하면 된다.TEMPLATE = app -> TEMPLATE = lib이와 같이 설정하면 linux의 경우에는 lib뒤에 프로젝트 파일명이 붙는다.예를 들면 abc.pro 라면 libabc.so.1.0.0 이라는 파일이 만들어 진다.물론 여기에 link 파일도 같이 만들어진다.QT에서는 기본적으로 버전 정보를 붙여서 library를 만들게 되어 있고 VERSION = 2.1.1 이런 식으로 버전의 이름을 지정할 수도 있다. 혹 버전 정보를 붙이고 싶지 않다면 아래와 같이 config에 추가하면 된다. CONFIG += unversioned_libname lib Prefix가 기본적으로 붙게 되어 ..
QT : 특정 디렉토리의 하위 디렉토리 포함한 파일 검색 참 QT를 할 수록 잘 만들어져있네.. 혹은 이런건 없나 할 때 다 있네. 라는 생각을 하게 되네요 가끔 하위디렉토리 포함하여 파일 검색하는 코드를 만들 때면 참 귀찮죠.. 검색을 해보니 좋은 방법이 있더군요. 코드는 아래와 같습니다. void MyWidget::ScanFileList(QString strDir) { QStringList strFilters; strFilters += "*.cpp"; strFilters += "*.h"; QDirIterator iterDir(strDir, strFilters, QDir::Files | QDir::NoSymLinks, QDirIterator::Subdirectories); while (iterDir.hasNext()) { iterDir.next(); ui->..
QT : stylesheet의 property사용하여 widget 그리기 stylesheet는 QT의 매력 중 하나죠.사용자가 임의로 편하게 widget의 모양을 변경가능하니 어찌나 편한지. MFC로 각 control을 변경하려면 완전 수작업을 무지해야하나 이건 참 편하네요.최근 나온 Windows 기반의 언어들도 이런식으로 진행되는 듯 한데 일단 QT가 open source라 더 매력적입니다. 일단 stylesheet를 작성하고 그걸 어떻게 사용할 수 있는지 살펴보겠습니다. 우선 코드는 아래와 같이 작성합니다.뭔가 그려야하는데 paintEvent 함수를 재정의해서 QStyleOption이라는 class를 사용합니다.그리고 style()->drawPrimitive(...) 함수를 호출하면 stylesheet에 명시한데로 widget을 그려줍니다. MyWidget.cppvoid..