سبک کدگذاری 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
}
}
}