سبک کدگذاری Qt و QML

Qt/c++

نامگذاری سیگنال و نقطه

هر دو سیگنال و اسلات باید از camelCase استفاده کنند. یک سیگنال باید از زمان گذشته ساده یا ضمیمه گذشته یک فعل استفاده کند، احتمالا با یک موضوع کوتاه پیشگویی شده است. یک اسلات مربوط به این باید سیگنال با کلمه "on" و نه کلمه "slot" پیشگویی شده باشد. در اینجا چند مثال وجود دارد:

// correct
signal:
    void shutdownScheduled();
    void navigationRequested();
...
slot:
    void onShutdownScheduled();
    void onNavigationRequested();

// incorrect
signal:
    void shutdown();
    void navigateToHomeView();
...
slot:
    void onShutdown();
    void slotNavigateToHomeView();

QML

فرمت کردن کد

نسخه Qt 5.15.0 از qmlformat دارای برخی از مسائل مربوط به بخش های نظرات است و در حال حاضر با ستون های حداکثر تبعیض نمی کند، بنابراین ما برای حال حاضر با استفاده از این دستورالعمل ها به شکل گیری ادامه خواهیم داد. زیر یک نمونه جامع از نمونه های نمونه است که از https://doc.qt.io/qt-5/qml-codingconventions.html سازگار شده است که تلاش می کند تا بخش ایده آل شکل داده شده را نشان دهد.

/*
 * authored by/copyright ...
 */

// Id always on the first line, and always present and called root
// for root component. Only present if referenced for children.
// Multi-line comments use '//'.
// There should always be a brief description of a component.
// Multi-line comments start with a capital letter and end with
// a period.
Rectangle {
    id: root

    // property declarations
    property bool thumbnail: false                          
    property alias image: photoImage.source

    // signal declarations
    signal clicked                                          

    // javascript functions
    function doSomething(x) {
        return x + photoImage.width
    }

    // object properties
    color: "gray"
    // try to group related properties together
    x: 20
    y: 20
    height: 150
    // large bindings
    width: {
        // Always space all operators, and add a single space
        // before opening brackets.
        if (photoImage.width > 200) {
            photoImage.width
        } else {
            height
        }
    }

    // child objects (contentItem, defaults, etc. first)
    Rectangle {
        id: border
        anchors.centerIn: parent
        color: "white"

        Image {
            id: photoImage
            anchors.centerIn: parent
        }
    }
    
    Text {
        anchors.centerIn: photoImage
        // Use the ellipsis character (…) for manual ellision within
        // UI text and don't translate untranslatables.
        text: qsTr("an emoji: %1 and a number: %2 …").arg("💡").arg(42)
    }

    // states
    states: State {
        name: "selected"
        PropertyChanges {
            target: border
            color: "red"
        }
    }

    // transitions
    transitions: Transition {
        from: ""
        to: "selected"
        ColorAnimation {
            target: border
            duration: 200
        }
    }
}