Programming/qt2026. 7. 1. 11:29

6.0.2 에서 qml을 열면 Designer 비활성화 되어있어서 qml을 텍스트로 수정해야 한다.

 

이전에 qt6를 깔땐 qt widget이 안되더니 먼가 하나씩 삐걱삐걱 하는 느낌?

 

qt creator 4.15 쓰니까 qml / widget 둘 다 잘 열리네 -_-

 

이제 반대로 버전 쭉쭉 올려봐야하나?

20.x 가 나온 상황인데 -_-a

'Programming > qt' 카테고리의 다른 글

qt for windows  (0) 2026.08.12
qt cmake 에서 프로젝트로 등록하기  (0) 2026.06.30
qt signal / slot, connect() Qt::AutoConnection  (0) 2026.06.30
qt5 qml 다국어지원  (0) 2026.06.30
qt5 qml Q_PROPERTY  (0) 2026.06.30
Posted by 구차니

문득 생각나서 gemini cli 업데이트 하고

로그인 성공했다는데 다시 로그인을 시도하게 한다.

아래 에러 메시지를 보니 안티그래비티로 이전하라고 하는데..

기업 계정인데도 안되는건가?

'모종의 음모 > ai 프로그램' 카테고리의 다른 글

회사 클로드 결제  (2) 2026.07.03
runpod 조사중  (0) 2026.07.01
mogrify를 이용한 이미지 증강, 배경색 설정  (0) 2026.06.25
local llm - mcp  (0) 2026.06.20
llama-swap 구현 (채팅)  (0) 2026.06.18
Posted by 구차니
embeded/robot2026. 6. 30. 15:18

위대하신(!) GPT 님께 질문을 바꾸어서 해보니 답을 내려주시었다!

from pymycobot.mycobot import MyCobot

mc = MyCobot("/dev/ttyAMA0", 1000000)

# Tool TCP 설정
# x, y, z, rx, ry, rz
mc.set_tool_reference([0, 0, 100, 0, 0, 0])

# End Type을 Tool로 변경
mc.set_end_type(1)

[링크 : https://chatgpt.com/share/6a435d66-1bd0-83ee-a338-b2b1932bee98]

 

send_angles([0,0,0,0,0,0], 10) 을 이용해서 쭉 펴면

이렇게 생겨 먹어서 굳이... 하자면 아래 기준 y축 방향이긴 한데

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/2-serialproduct/2.1-280/2.1.5-PI-2023.html]

 

gpt로 물어보고 다시 설명을 보니 다 써있었구나.. -_ㅠ

T in the figure is the set tool coordinate system. The posture of this coordinate system is consistent with O’, and the relative displacement of the origin has occurred. Use the python function to set the tool coordinate system:

set_tool_reference([x, y, z, rx, ry, rz]) //Set tool coordinate system
set_end_type(1) //Set the end coordinate system type as tool
Assume that the tool coordinate system T is not rotated relative to O' (rx = ry = rz = 0)
Assume that the origin of the tool coordinate system T is in the coordinate system O’ at (x = 0, y = 0, z = 100mm)
The final tool coordinate system parameter is set_tool_reference(0, 0, 100, 0, 0, 0)

 

그런데 왜 끝부분의 z 축은 가장 아래의 x 축을 보고 있는걸까?

 

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/2-serialproduct/2.1-280/Kinematics&Coordinate.html]

 

2.3 set_tool_reference(coords)

Function: Set Tool coordinate system。
Parameters:
coords: The coordinate value of [x, y, z, rx, ry, rz] has a length of 6, x, y, z ranging from - 280 to 280, and rx, ry, yz ranging from - 314 to 314
Return Value: None


2.4 get_tool_reference()

Function: Get Tool coordinate system。
Return Value: Returns a coordinate list with a length of 6


2.9 set_end_type(end)

Function: Set end coordinate system。
Parameters:
end: 0 - flange(default),1 - tool
Return Value: None


3.0 get_end_type()

Function: Get end coordinate system
Return Value: 0 - flange(default),1 - tool, -1 - error

[링크 : https://docs.elephantrobotics.com/docs/gitbook-en/7-ApplicationBasePython/7.3_coord.html]

 

+

해보니 잘 된다.

set_end_type() 의 문제였던 듯.

set_end_type(1) 해주고 나서 set_coords() 에서 rx 를 오가게 하니 된다.

'embeded > robot' 카테고리의 다른 글

mycobot ros1/ros2  (0) 2026.07.02
gcode (g-code)  (0) 2026.07.01
mycobot 280 pi / python  (0) 2026.06.29
왼손 오른손 좌표계  (0) 2026.06.22
mycobot280_pi urdf  (0) 2026.06.22
Posted by 구차니
Programming/qt2026. 6. 30. 14:23

맨땅에 헤딩하기! ㅋㅋ

클로드가 샘플을 짜주었는데 pro 파일을 생성해주지 않고

cmake만 있어서 한번 변환하는거 테스트 해봄

 

Step 1. QT Creator / Projects / NEW

 

Step 2. import project / import as qmake or cmake project

 

Step 3. .pro 파일로 만들 파일명과 저장할 경로 선택

 

Step 4. 프로젝트로 관리할 파일 추가. 빌드할 녀석들을 추가하는거라 CMakeLists.txt 와 같은 소스코드가 아닌건 빼야 한다.

진행하고 보니 qml 디렉토리를 빼먹었었네 -_-

 

Step 5. 버전관리하려면 넣고 아니면 빼고

 

Step 6. "Configure Project" 우측 하단 버튼을 꼭 눌러주어야 파일 추가되면서 제대로 생성된다.

'Programming > qt' 카테고리의 다른 글

qt for windows  (0) 2026.08.12
qtcreator 6.0.2 -> 4.15.2 다운그레이드 시도  (0) 2026.07.01
qt signal / slot, connect() Qt::AutoConnection  (0) 2026.06.30
qt5 qml 다국어지원  (0) 2026.06.30
qt5 qml Q_PROPERTY  (0) 2026.06.30
Posted by 구차니
Programming/qt2026. 6. 30. 12:40

connect() 함수를 사용하면 대개 인자를 4개만 넣고 쓰는데

함수 프로토타입을 보니 가장 마지막 인자가 기본값으로 지정되어 있다.

// qobject.h
    static inline QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer<Func1>::Object *sender, Func1 signal,
                                     const typename QtPrivate::FunctionPointer<Func2>::Object *receiver, Func2 slot,
                                     Qt::ConnectionType type = Qt::AutoConnection)

 

기본은 Qt:AutoConnection 이라는데 약간의 손실 가능성이 존재하고

반드시 손실되서는 안되는 경우라면 QueuedConnection으로 하는것을 추천한다고 한다.

// qnamespace.h
    enum ConnectionType {
        AutoConnection,
        DirectConnection,
        QueuedConnection,
        BlockingQueuedConnection,
        UniqueConnection =  0x80
    };

 

DirectConnection은 다른 스레드에서 쓰면 동기화 문제 발생할수 있다는걸 보면 동일 쓰레드 내에서 써야 할듯.

[링크 : https://still.tistory.com/86]

 

 

[링크 : https://doc.qt.io/qt-6/qt.html]

'Programming > qt' 카테고리의 다른 글

qtcreator 6.0.2 -> 4.15.2 다운그레이드 시도  (0) 2026.07.01
qt cmake 에서 프로젝트로 등록하기  (0) 2026.06.30
qt5 qml 다국어지원  (0) 2026.06.30
qt5 qml Q_PROPERTY  (0) 2026.06.30
qt5 qml connections  (0) 2026.06.30
Posted by 구차니
Programming/qt2026. 6. 30. 12:31

언제나 그렇듯(?) tr() 대신 qsTr()로 감싸줘야 한다.

Text {
    id: txt1;
    text: qsTr("Back");
}

[링크 : https://doc.qt.io/archives/qt-5.15/qtquick-internationalization.html]

 

qt5.10 이전에는 retranslate()가 정상적으로 작동하지 않는 문제가 있었다고.

함수 레벨이 다름에 주의.

그런데.. installTranslator 하기 전에 removeTranslator 해줘야 하나?

    if(lang == "bg") {
     qApplication->removeTranslator(&trEN);
     qApplication->installTranslator(&trBG);
    } else if (lang == "en") {
     qApplication->removeTranslator(&trBG);
     qApplication->installTranslator(&trEN);
    }

    qmlEngine->retranslate();

[링크 : https://forum.qt.io/topic/90018/problem-with-dynamic-language-change-in-qml]

[링크 : https://wiki.qt.io/How_to_do_dynamic_translation_in_QML]

'Programming > qt' 카테고리의 다른 글

qt cmake 에서 프로젝트로 등록하기  (0) 2026.06.30
qt signal / slot, connect() Qt::AutoConnection  (0) 2026.06.30
qt5 qml Q_PROPERTY  (0) 2026.06.30
qt5 qml connections  (0) 2026.06.30
qt 동적 해상도 대응  (0) 2026.06.29
Posted by 구차니
Programming/qt2026. 6. 30. 12:24

uml 외부와 내부를 연결해주려면 Q_PROPERTY를 이용해서 변수를 지정하고

해당 변수를 건드릴 함수를 연동해주면 된다.

class UIController : public QObject
{
    Q_OBJECT

    // ── 페이지 ──────────────────────────────────────────────
    Q_PROPERTY(int currentPage
               READ  currentPage
               WRITE setCurrentPage
               NOTIFY currentPageChanged)

    // ── 센서 / 데이터 값 ────────────────────────────────────
    Q_PROPERTY(double temperature
               READ  temperature
               NOTIFY temperatureChanged)

    Q_PROPERTY(double progress
               READ  progress
               NOTIFY progressChanged)

    // ── 텍스트 ──────────────────────────────────────────────
    Q_PROPERTY(QString statusText
               READ  statusText
               NOTIFY statusTextChanged)

[링크 : https://doc.qt.io/qt-6/qtqml-cppintegration-exposecppattributes.html]

 

다만 Q_PROPERTY로 연결이 가능한 타입에는 제한이 있다.

개인이 만든 구조체 등은 못 넘기는 듯?

[링크 : https://doc.qt.io/qt-6/qtqml-cppintegration-data.html]

'Programming > qt' 카테고리의 다른 글

qt signal / slot, connect() Qt::AutoConnection  (0) 2026.06.30
qt5 qml 다국어지원  (0) 2026.06.30
qt5 qml connections  (0) 2026.06.30
qt 동적 해상도 대응  (0) 2026.06.29
QT 다국어 지원, qm 만 교체 할수 있도록 변경  (0) 2026.06.29
Posted by 구차니
Programming/qt2026. 6. 30. 11:39

claude에게 qt5 qml 예제를 만들어 달라고 하고  코드 분석중

이전에는 못봤던 Connections 라는 키워드가 눈에 띈다

// Main.qml
ApplicationWindow {
    id: root

    // uiController.currentPage 변화 → StackLayout 전환
    Connections {
        target: uiController
        // Qt5(Qt5.4+)는 함수형 핸들러 onXxxChanged 동일하게 지원
        onCurrentPageChanged: {
            stack.currentIndex = uiController.currentPage
        }
    }

    ColumnLayout {
        anchors.fill: parent
        spacing: 0
        // ── 페이지 스택 (StackedWidget 대응) ──────────────
        StackLayout {
            id: stack
            Layout.fillWidth: true
            Layout.fillHeight: true
            currentIndex: 0

            Loader { source: "HomePage.qml" }
            Loader { source: "DataPage.qml" }
            Loader { source: "SettingsPage.qml" }
        }

 

engine 에다가 setContextProperty 하는건 engine.load() 이후에 해도 적용되긴 한다.

// main.cpp
    // ── 인스턴스 생성 ─────────────────────────────────────
    SocketClient  socketClient;
    UIController  uiController;

    // ── 소켓 → UI 컨트롤러 시그널 연결 ───────────────────
    QObject::connect(&socketClient, &SocketClient::pageChangeRequested,
                     &uiController,  &UIController::onPageChange);

    QObject::connect(&socketClient, &SocketClient::valueChangeRequested,
                     &uiController,  &UIController::onValueChange);

    QObject::connect(&socketClient, &SocketClient::textChangeRequested,
                     &uiController,  &UIController::onTextChange);

    // ── QML 엔진 설정 ─────────────────────────────────────
    QQmlApplicationEngine engine;

    // QML에서 'socketClient', 'uiController' 이름으로 접근 가능
    engine.rootContext()->setContextProperty("socketClient", &socketClient);
    engine.rootContext()->setContextProperty("uiController", &uiController);

 

// socketclient.h
class SocketClient : public QObject
{
    Q_OBJECT
    Q_PROPERTY(bool connected READ isConnected NOTIFY connectedChanged)
    Q_PROPERTY(QString clientAddress READ clientAddress NOTIFY clientAddressChanged)

public:
    explicit SocketClient(QObject *parent = nullptr);
    ~SocketClient();

    bool isConnected() const { return m_socket != nullptr; }
    QString clientAddress() const { return m_clientAddress; }

    Q_INVOKABLE void startListening(int port = 9000);
    Q_INVOKABLE void stopListening();

signals:
    void connectedChanged();
    void clientAddressChanged();

    // 파싱된 명령 시그널
    void pageChangeRequested(int index);

 

// uicontroller.cpp
void UIController::setCurrentPage(int page)
{
    if (m_currentPage == page) return;
    m_currentPage = page;
    emit currentPageChanged();
}

void UIController::onPageChange(int index)
{
    setCurrentPage(index);
}

 

[링크 : https://swjs.tistory.com/entry/QTQML-QML의-Connections]

[링크 : https://doc.qt.io/qt-6/ko/qml-qtqml-connections.html]

'Programming > qt' 카테고리의 다른 글

qt5 qml 다국어지원  (0) 2026.06.30
qt5 qml Q_PROPERTY  (0) 2026.06.30
qt 동적 해상도 대응  (0) 2026.06.29
QT 다국어 지원, qm 만 교체 할수 있도록 변경  (0) 2026.06.29
QGraphicsProxyWidget  (0) 2026.06.05
Posted by 구차니
개소리 왈왈/컴퓨터2026. 6. 30. 10:23

일요일 부터 버려진 컴퓨터가 h81 이길래 그냥 주울 생각을 안하다가

오늘 혹시나 해서 cpu만 적출해볼까 하면서 열어보니 오오~!

 

다행히 잘 켜진다 ㅋㅋ

써멀 없이 그냥 쿨러만 달아서 온도가 어우

'개소리 왈왈 > 컴퓨터' 카테고리의 다른 글

반도체 수급불량이 sd 카드에도..  (0) 2026.07.08
socamm lpddr  (0) 2026.07.03
포맷할때가 되었나..  (0) 2026.06.19
iptime as 접수  (0) 2026.06.15
asrock B360M pro4  (0) 2026.05.01
Posted by 구차니

우회전 하는데 맞은편 좌회전이 너무 내쪽으로 붙어서

그걸 피한다고 이르게 회전했더니 뒷 타이어 연석에 긁어 먹었다.

제법 충격이 커서 tpms 바로 확인ㅇ하는데 공기압은 문제가 없어서 일단은 운행했는데

내리고 나서 확인해보니 제법 크고 깊게 찢어졌다.

 

그냥 보기에는 살짝이네~ 싶지만

 

들어서 보면 제법 깊게 파였다 ㅠㅠ

'개소리 왈왈 > 육아관련 주저리' 카테고리의 다른 글

철원 팜팜랜드  (0) 2026.07.17
지상용 선풍기?  (2) 2026.07.12
베란다 문 잠금장치 수리  (2) 2026.06.23
바쁜주말  (2) 2026.05.31
밀크티 타블렛(s6 lite) 초기화 하기  (0) 2026.05.23
Posted by 구차니