<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>j-been.log</title>
        <link>https://velog.io/</link>
        <description>개발조무사</description>
        <lastBuildDate>Sun, 07 Jul 2024 12:23:25 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>j-been.log</title>
            <url>https://velog.velcdn.com/images/j-been/profile/64f5f48d-c180-424a-b723-dbdc7b7addce/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. j-been.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/j-been" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Qt / qml] Qt Quick Controls에서 Text 미표시 문제]]></title>
            <link>https://velog.io/@j-been/Qt-qml-Qt-Quick-Controls%EC%97%90%EC%84%9C-Text-%EB%AF%B8%ED%91%9C%EC%8B%9C-%EB%AC%B8%EC%A0%9C</link>
            <guid>https://velog.io/@j-been/Qt-qml-Qt-Quick-Controls%EC%97%90%EC%84%9C-Text-%EB%AF%B8%ED%91%9C%EC%8B%9C-%EB%AC%B8%EC%A0%9C</guid>
            <pubDate>Sun, 07 Jul 2024 12:23:25 GMT</pubDate>
            <description><![CDATA[<p>Button, Radio Button등 Control Object를 활용하려고 QtQuick.Controls를 import를 해서 활용하던중 문제가 생겼다.
<img src="https://velog.velcdn.com/images/j-been/post/e8b329e0-e6f9-48c2-aab7-d7c6410d0e83/image.png" alt="">
Control Object 내의 text 속성이 동작을 안 하는건지 표시가 안 되는 것이다.
<img src="https://velog.velcdn.com/images/j-been/post/788a8ca8-7124-4a90-8654-6e4a0aa9dcbc/image.png" alt="">
문제를 찾는 과정에서 Qt Quick Controls가 해당 OS의 맞춰서 테마를 알아서 변경하는 것을 알았고 해당 맥북의 설정은 다크모드로 되어있으나 무슨 문제인지 라이트모드로 테마가 맞춰져있고 텍스트는 다크모드로 설정 되어서 미 표시가 되는것으로 추측해 봤다...(맥북의 테마를 라이트모드로 설정 시 텍스트가 정상 표시되었다.)
<img src="https://velog.velcdn.com/images/j-been/post/e7488afc-00ab-4130-8015-e251432aba76/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/f9a6b7f8-cfbd-4ad6-8c43-a9262e4496c7/image.png" alt="">
구글링을 해서 찾아보니 비슷한 문제를 겪고 있는 케이스를 찾아서</p>
<p>QQuickStyle을 import 하고 테마를 임의로 변경하였고, QQuickStyle을 Import 하기 위해선 QT 공식 홈페이지 가이드를 참고하여 Cmake일 경우</p>
<pre><code>find_package(Qt6 COMPONENTS QuickControls2 REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::QuickControls2)</code></pre><p>CMakeLists.txt에서 해당 부분을 추가하여 사용할 수 있다.
여기서 &quot;mytarget&quot; 부분은 해당 라이브러리의 이름을 적으면 된다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/a4eb2349-fe9f-43b5-bb37-5b99510d8535/image.png" alt="">
이렇게 테마 변경으로 텍스트 부분을 해결할 수 있었다.</p>
<p>솔직히 맥북의 테마 설정으로 이런 문제가 생길 줄은 몰랐고
이런 작은 문제로도 정보 자체가 많이 없기 때문에 시간이 생각보다 오래 걸렸지만...
우선 해결은 했으니 다행이라고 생각한다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Qt / qml] 기본 Object 간단 활용]]></title>
            <link>https://velog.io/@j-been/Qt-qml-%EA%B8%B0%EB%B3%B8-Object-%EA%B0%84%EB%8B%A8-%ED%99%9C%EC%9A%A9</link>
            <guid>https://velog.io/@j-been/Qt-qml-%EA%B8%B0%EB%B3%B8-Object-%EA%B0%84%EB%8B%A8-%ED%99%9C%EC%9A%A9</guid>
            <pubDate>Sun, 16 Jun 2024 11:27:15 GMT</pubDate>
            <description><![CDATA[<p>이번엔 기본 Object를 간단하게 활용하여 보겠다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/e5f90483-04f1-44b4-b09c-1fec2f276f9e/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/315a319c-47e3-44e5-90af-2a3d228b29cd/image.png" alt=""></p>
<p>위 사진처럼 Rectangle Object를 간단하게 구현해 보았다.
여기서 봐야 할 것은 anchors 속성값을 활용하여 Object의 위치를 변경 시킬 수 있고 parent는 부모 객체를 기준으로 동작하겠다는 것이다.
현재 Rectangle의 부모 객체는 상위의 있는 Window로 Window를 기준으로 anchors 속성 값에 따라 위치를 변경하고 있는 것이다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/e8619050-47fb-4d24-b82e-7cdd56ea42b0/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/b02dd9a9-ff64-4f28-ab81-903af629f6f0/image.png" alt=""></p>
<p>이런 식으로 Object 내에 Object를 구성하는 방식으로도 활용하여 Rectangle 내에 텍스트나 사진을 넣는 것도 가능하며
<img src="https://velog.velcdn.com/images/j-been/post/26f75e32-a4e2-4104-a6ee-2469d47d78c7/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/42f4237a-de29-4b38-9276-51c215e5bef2/image.png" alt=""></p>
<p>MouseArea Object를 활용하여 마우스 동작 이벤트에 따라 결과값이 다르게 동작할 수도 있다.</p>
<p>다음엔 이런 Object를 활용하여 간단한 동작을 하는 프로젝트를 만들겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Qt / qml] Mac > Window 환경으로 빌드하기]]></title>
            <link>https://velog.io/@j-been/Qt-qml-Mac-Window-%ED%99%98%EA%B2%BD%EC%9C%BC%EB%A1%9C-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@j-been/Qt-qml-Mac-Window-%ED%99%98%EA%B2%BD%EC%9C%BC%EB%A1%9C-%EB%B9%8C%EB%93%9C%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 11 Jun 2024 15:16:04 GMT</pubDate>
            <description><![CDATA[<p>Mac 환경에서 생성한 프로젝트를 Window 환경에서 빌드 하였는데 아래 alert 창이 뜨면서 빌드가 되지 않는 문제가 생겼다.
<img src="https://velog.velcdn.com/images/j-been/post/b66f4cec-8ce4-46f6-9186-5ca5acf57b29/image.png" alt="">
구글링을 해본 결과 프로젝트를 생성하면서 해당 Kits 정보를 CMakeLists.txt.user 파일에 저장되는 것 같았다.
<img src="https://velog.velcdn.com/images/j-been/post/afe22399-efa5-47b0-9ef7-5e5478953cf0/image.png" alt="">
그래서 해결 방법은 저 CMakeLists.txt.user 파일을 삭제하고 Window 환경의 Kits로 설정하면 해당 Kits에 맞는 CMakeLists.txt.user 파일을 재 생성하고 정상적으로 빌드 된다.
<img src="https://velog.velcdn.com/images/j-been/post/eac22440-59eb-4577-9225-da771920572d/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/3cb89c4f-e6d9-49e5-bb66-bb585926f70d/image.png" alt=""></p>
<p>이 문제 때문에 이후에 CMakeLists.txt.user 파일은 커밋에서 제외 처리를 해야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Qt / qml] 기본 Object Type]]></title>
            <link>https://velog.io/@j-been/Qt-qml-%EA%B8%B0%EB%B3%B8-Object-Type</link>
            <guid>https://velog.io/@j-been/Qt-qml-%EA%B8%B0%EB%B3%B8-Object-Type</guid>
            <pubDate>Sat, 11 May 2024 10:51:07 GMT</pubDate>
            <description><![CDATA[<p>Qml의 기본적인 Object Type을 알아보려고 한다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/58134270-3bb1-4425-bf0d-09149d60f5d9/image.png" alt=""></p>
<p><a href="https://doc.qt.io/archives/qt-4.8/qml-basic-visual-elements.html">https://doc.qt.io/archives/qt-4.8/qml-basic-visual-elements.html</a></p>
<p>QT 공식 사이트 가이드에서 기본적인 Ojbect Type의 명칭과 기능을 찾아볼 수 있었다.</p>
<p>하지만 웹 개발을 해본사람이라면 이상한점을 느낄수 있을텐데 HTML에서 기본적으로 제공하는 기능에 비해 부족한게 많다. (button, radio button, check box...)</p>
<p>이부분은 찾아보니 Qt Quick Controls을 import하면 활용할수 있는데 일종의 라이브러리로 생각이 되는데 추후에도 기본 기능에서 부족한 부분은 QT사이트 가이드에서 찾아보면 될거 같다.</p>
<p>우선 이건 나중에 더 알아보기로 하고 기본 Object Type에 집중 해보려고 한다.</p>
<h4 id="borderimage">BorderImage</h4>
<p>Image Object와 같이 이미지를 표현 하는 Object Type이지만 Boarder 안에 이미지를 표시 하는 형식으로 Boarder 크기를 지정 하고 이미지를 Boarder크기에 맞게 조정하는 등의 동작을 할 수 있다.</p>
<h4 id="image">Image</h4>
<p>이미지를 표현하는 Object Type으로 source 속성으로 경로를 지정한다.</p>
<h4 id="item">Item</h4>
<p>여러 Object 항목을 묶어서 일괄 동작 하게끔 해주는 Object Type으로 HTML에서 영역을 따로 지정하기 위해 div로 묶는 동작과 비슷할거 같다는 추측을 하고있다.</p>
<h4 id="rectangle">Rectangle</h4>
<p>사각형을 표현하는 Object Type으로 기본적으로 색상 및 크기를 조정 할수 있다 속성값은 아래와 같다</p>
<p>border.width : 선의 뚜께를 결정
border.color : 선의 색상을 결정
color : 사각형을 채우는 색상을 결정
gradient : 사각형을 채우는 그라데이션을 결정
radius : 사각형 테두리의 둥근 정도를 결정</p>
<h4 id="text">Text</h4>
<p>텍스트를 표현하는 Object Type으로 글꼴과 크기, 색상 등을 조정 할수 있다.</p>
<p>text : 표시 될 글자를 결정
font.family : 텍스트의 폰트를 결정
font.pointSize : 텍스트의 크기를 결정
color : 텍스트의 색상을 결정</p>
<h4 id="textedit">TextEdit</h4>
<p>입력이 가능한 텍스트 여러줄을 표현하는 Object Type 이며 Text Object Type과 동일 하게 기존에 표시될 글자를 text : 속성으로 결정 할 수 있다.</p>
<h4 id="textinput">TextInput</h4>
<p>입력이 가능한 텍스트 한줄을 표현하는 Object Type 이다</p>
<p><br><br>
Object Type 및 속성값은 너무 많은 관계로 전부 정리 하진 못하고 자주 쓰이게 될거같은 항목만 정리 하였다.
QT 공식 사이트 가이드의 본문을 번역하여 정리 하였으며 실제 동작과 다른 부분이 있을수 있으며, 다른 부분이 확인 된다면 수정 할 예정이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Qt / qml] Project 시작]]></title>
            <link>https://velog.io/@j-been/Qt-qml-Project-%EC%8B%9C%EC%9E%91</link>
            <guid>https://velog.io/@j-been/Qt-qml-Project-%EC%8B%9C%EC%9E%91</guid>
            <pubDate>Mon, 06 May 2024 07:07:00 GMT</pubDate>
            <description><![CDATA[<h3 id="기본-project-생성"><strong>기본 Project 생성</strong></h3>
<p><img src="https://velog.velcdn.com/images/j-been/post/972128e6-37d6-472c-914a-d2f889392606/image.png" alt=""></p>
<p>qml 기반으로 Project 생성은 사진과 같이 설정 후 생성 하면 된다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/ddbf118b-3d06-4b53-80d0-d4fbaf044fa5/image.png" alt=""></p>
<p>프로젝트를 생성하면 main.cpp 와 main.qml 파일이 생성되는데
동작 구현 로직은 main.cpp
UI 출력은 main.qml로 구현된다.</p>
<p>이런부분에 있어선 웹 프론트와 비교하면
main.cpp는 html단
Main.qml는 CSS와 흡사하다고 생각하면 이해가 편할것 같다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/597d829a-bca4-462e-8567-c789ff006ae4/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/58826a0f-28c4-4cfe-9179-be205247d3e7/image.png" alt="">
Main.qml 파일을 내부를 살펴보았을때
선택자와 선언부가 존재하고 선언부 내부는 속성과 속성값으로 구성되어 있어
CSS와 구조가 매우 흡사하다.
<img src="https://velog.velcdn.com/images/j-been/post/56b69578-322f-47fc-89e4-be08fe07c88f/image.png" alt="">
main.cpp 파일은 C++로 이루어져있고 기본 구성은 코드 실행시 메인 메서드 내부에서 UI 출력을 담당하는 Main.qml을 호출하는 내용의 코드가 자동 생성 되는거 같은데 아직 C++의 이해도가 낮기 때문에 진행하면서 더 알아봐야 할것 같다.
<img src="https://velog.velcdn.com/images/j-been/post/cd422dc2-ad75-4239-80c3-fd11b483d21b/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/73b7155a-3e27-4448-9cd9-bc91fbb78353/image.png" alt="">
Qt Creator 왼쪽 하단의 Run 버튼을 누를 시 윈도우 화면이 출력 되는데 상단 title이 Hello World 인걸 확인 하여 Main.qml의 Window 선택자의 title 선언부는 윈도우 창의 제목을 변경하는 항목인 걸 추측할 수 있을 거 같다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Qt / qml] QT 프로젝트 git 원격 저장소 연결 (with. 소스트리)]]></title>
            <link>https://velog.io/@j-been/Qt-qml-QT-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-git-%EC%9B%90%EA%B2%A9-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%97%B0%EA%B2%B0-with.-%EC%86%8C%EC%8A%A4%ED%8A%B8%EB%A6%AC</link>
            <guid>https://velog.io/@j-been/Qt-qml-QT-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-git-%EC%9B%90%EA%B2%A9-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%97%B0%EA%B2%B0-with.-%EC%86%8C%EC%8A%A4%ED%8A%B8%EB%A6%AC</guid>
            <pubDate>Mon, 06 May 2024 06:46:46 GMT</pubDate>
            <description><![CDATA[<p>프로젝트 생성 후 가장 먼저 해야 하는일은 Github를 통해 원격 저장소 연동이다.
나는 이전부터 소스트리를 활용하였기 때문에 소스트리로 연동을 연동을 하겠다.</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/e8822055-ff5d-456b-bf17-7f8b9195f36f/image.png" alt="">
우선 Github에서 Repository를 생성해준다.
(Add a README file을 체크하면 연동에 오류가 있다고 한다)</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/78721f24-201d-420f-a17e-38b4cc4626c9/image.png" alt="">
이후에 소스트리 &gt; 새로 만들기 &gt; 로컬 저장소 추가하기에서 생성한 프로젝트 파일을 열기 해준다</p>
<p><img src="https://velog.velcdn.com/images/j-been/post/5987f1dc-5f1d-4fb1-9781-adfe1cfd81ff/image.png" alt="">
로컬 저장소 생성이 완료되면 생성된 로컬 저장소로 들어가서
설정 &gt; 원격 &gt; 추가로 진입 하여 URL/경로를 아래와 같은 형식으로 작성한다.</p>
<pre><code>https://{Github token}@{Github에서 생성한 Repository URL}</code></pre><p><img src="https://velog.velcdn.com/images/j-been/post/83aecda0-81d0-417d-8ebe-04c2cbae5c61/image.png" alt="">
<img src="https://velog.velcdn.com/images/j-been/post/d6c80f36-0b61-4d5f-9f24-aa26fcc4559f/image.png" alt="">
이후 commit, push를 하게되면 정상적으로 저장소 연동이 된걸 확인할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Qt / qml] Qt/qml 이란?]]></title>
            <link>https://velog.io/@j-been/Qt-qml-Qtqml-%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@j-been/Qt-qml-Qtqml-%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Mon, 06 May 2024 04:57:02 GMT</pubDate>
            <description><![CDATA[<h2 id="qtqml은">QT/qml은</h2>
<p>QT에서 제공하는 프레임워크인 QT Quick내의 UI를 만드는 프로그래밍 언어 이다.
qml은 코드를 위에서 한줄씩 읽어들여 처리하는 인터프리터 형식이며 JavaScript와 CSS와 흡사한 구조를 가지고 있으며 qml의 예시는 아래와 같다</p>
<pre><code>import QtQuick 1.0
Rectangle {

    width: 200

    height: 200

    Text {

        x: 10

        y: 10

        text: &quot;Hello World&quot;

    }

}</code></pre><p>QT Quick은 디자인(qml) 과 기능(cpp) 로직을 분리 할수 있으며 qml로직에서 cpp에서 작성한 API를 사용할 수 있다.</p>
<p>이부분을 웹과 비교를 하자면 로직 분리 부분은 백엔드는 c++ 프론트엔드는 qml를 사용하게 개발을 한다라고 이해하면 될거같고, </p>
<p>qml로직에서 cpp의 API를 사용하는 부분은 axios를 통해 백엔드의 API를 React에서 호출하여 활용하는 것과 비슷하다고 생각하면 될 것같다.</p>
]]></description>
        </item>
    </channel>
</rss>