프로그래밍/qml

[QML] Button / 버튼

코끼리_땃쥐 2024. 6. 19. 20:00
반응형


폴더 구조

├ ─QML/

│       ├ ─ qml/

│               └ view.qml

└ main.py

 

# main.py

import sys

from PySide6.QtCore import QUrl
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine

if __name__ == "__main__":
    app = QGuiApplication(sys.argv)
    engine = QQmlApplicationEngine()
    engine.load(QUrl("qml/view.qml"))

    if not engine.rootObjects():
        sys.exit(-1)

    sys.exit(app.exec())

 

 

기본적인 버튼
// view.qml

import QtQuick 2.9
import QtQuick.Controls 2.9

ApplicationWindow{
    visible : true
    width : 320
    height : 240
    
    Button{
        text : "Click me"
        x : parent.width/2 - width/2
        y : parent.height/2 - height/2
    }
}

 

기본적인 버튼이다.

text를 "click me" 로 변경하고

x 좌표와  y좌표를 중앙으로 옮겼다.

 

Click 이벤트

버튼 클릭시 원하는 작업을 하고 싶을때

// view.qml

import QtQuick 2.9
import QtQuick.Controls 2.9

ApplicationWindow{
    visible : true
    width : 320
    height : 240
    
    Button{
        text : "Click me"
        
        x : parent.width/2 - width/2
        y : parent.height/2 - height/2

        onClicked : {
            console.log("Button clicked")
        }
    }
}

 onClicked : { console.log("Button clicked") } 로  특정 작업을 진행할수 있다.

본인은 "Button clicked" 라는 문자열을 출력해보았다.

 

 

추가적으로 더블클릭

// view.qml

import QtQuick 2.9
import QtQuick.Controls 2.9

ApplicationWindow{
    visible : true
    width : 320
    height : 240
    
    Button{
        text : "Click me"
        x : parent.width/2 - width/2
        y : parent.height/2 - height/2
        onDoubleClicked : {
            console.log("Button double clicked")
        }
    }
}

 

길게 누르고 있기 등이 있다.

// view.qml

import QtQuick 2.9
import QtQuick.Controls 2.9

ApplicationWindow{
    visible : true
    width : 320
    height : 240
    
    Button{
        text : "Click me"
        x : parent.width/2 - width/2
        y : parent.height/2 - height/2
        onPressAndHold : {
            console.log("Pressed and hold")
        }
    }
}

 

반응형