首页 > 编程语言 >C++软件编码规范推荐--Qt相关

C++软件编码规范推荐--Qt相关

时间:2022-11-14 19:23:55浏览次数:39  
标签:right Qt parent -- top C++ left Rectangle anchors

1 背景

  Qt开发常用于跨平台开发的首选,所以关于Qt开发的编码规范也很重要。

2 QWidget

  【规范】信号命名:sgl+驼峰命名规则,如:sglUpdate();

  【规范】槽函数:on+驼峰命名规则,如:onUpdate();

  【规范】由编译器自动生成的槽函数(如on_btn_clicked())不做改动;

  【规范】控件命名采用驼峰命名规则;如

控件名 缩写
QPushButton pbtn
QRadioButton rbtn
QToolButton tbtn
QLabel lbl
QWidget widget
QLineEdit ldt
QTextEdit text
QTextBrowser text
QTabWidget tab
QTableWidget tbw
QTableView tbv
QStackedWidget stack
QCheckBox chk
QComboBox cbx
QGroupBox gbx
QListzView list
QListWidget list
QTreeWidget tree
QTreeView tree
QSpinBox sbx
QDoubleSpinBox dsbx
QDataeEdit date
QTimerEdit time
QDateTimeEdit datetime
QProgressBar pgb

3 QML

  【规范】属性的命名:使用变量驼峰命名,如:property bool thumbnail: false,分号后接空格再接值;

  【规范】信号的命名:sgl+变量驼峰命名,如:signal sglSetFreq()。

  【规范】函数的命令:函数和参数均使用驼峰命名,如:function changeShowBtnSize(var rect_height, var rect_width)。

  【规范】关于槽函数的命名,可使用:onSgl + 变量驼峰命名,如:function onSglUpdate()。

  【规范】分组属性,如果使用一个属性组中的多个属性,使用大括号将各子属性包含,阅读性和代码简洁性更好。

推荐 不推荐

Rectangle{

        anchors{

                left: parent.left;

                top: parent.top;

                right: parent.right;

                leftMargin: 20;

        }

}

  

Rectangle{

        anchors.left: parent.left;

        anchors.top: parent.top;

        anchors.right: parent.right;

        anchors.leftMargin: 20;

}

【规范】list的使用,如果只包含单个元素,可省略大括号;

list有多个元素

list有单个元素

states:[

        State {

                name: "open"

                PropertyChanges {

                        target: container

                        width: 200

                 }

        }

        State {

                name: "close"

                PropertyChanges {

                        target: container

                        width: 0

                }

        }

]

states: State {

        name: "open"

        PropertyChanges {

                target: container

                width: 200

        }

}

  

【规范】JavaScript的使用;

单行脚本,用分号隔开,分号后接空格

Rectangle {color: "blue"; wdth: parent.width / 3}
几行(a couple of)脚本,大括号包含

Rectangle {

        color: "blue"

        width: {

                var w = parent.width / 3;

                console.debug(w);

                return w;

        }

}

 多行(more than a couple of)脚本,将函数定义到 Js 文件,并导入使用

import "myscript.js" as Script

Rectangle {

        color: "blue";

        width: Script.calculateWidth(parent);

}

【规范】分号的使用,一个代码块中,如果代码超过一行,用分号隔开,否则不加分号,如:

不加分号

加分号

Rectangle {

        anchors.left: parent.left

        anchors.top: parent.top

        anchors.right: parent.right

        anchors.leftMargin: 20

}

Rectangle {

        anchors {

                left: parent.left;

                top: parent.top;

                right: parent.right;

                leftMargin: 20;

        }

}

Rectangle {

        id: id_photo

        property bool thumbnail: false

        signal clicked
}

MouseArea {

        anchors.fill: parent

        onClicked: {

        var scenePos = mapToItem(null, mouseX, mouseY);

        console.log("MouseArea was clicked at scene pos "            + scenePos);

        }

}

 【规范】大括号的使用,与 C/C++不同的是,左大括号不应独占一行,而与组件名、函数放在同一行;

不推荐

推荐

Rectangle

{

        anchors {

        left: parent.left;

        top: parent.top;

        right: parent.right;

        leftMargin: 20;

        }

}

Rectangle {

        anchors {

                left: parent.left;

                top: parent.top;

                right: parent.right;

                leftMargin: 20;

        }

}

function fun()

{

}

function fun() {

}

规范】空格的使用,如下:

组件名与大括号之间加空格

Rectangle {

}

冒号后接空格;单行代码末尾大括号之前接空格

Rectangle { id: id_root }

单行代码分号后接空格

Rectangle { color: "blue"; width: parent.width }

【规范】QML 文件说明与 C/C++定义一致,见 2.1.2,定义顺序为:id、property declarations、signal declarations、JavaScript functions、object properties、child objects、states、transitions,如:

标签:right,Qt,parent,--,top,C++,left,Rectangle,anchors
From: https://www.cnblogs.com/ysnana/p/16890086.html

相关文章

  • 洛谷 P1654
    设当前枚举到第\(i\)位,\(x\)为\(i\)前面期望连续\(1\)的个数。令\(a_i=x,b_i=x^2,c_i=x^3\)。\(a\)很好转移,\[a_i=(a_{i-1}+1)\timesp_i\]\(b\)的转移考虑......
  • nove.14 对懒标记的思考
    小记这本来是萌新的时候就该理解的问题,现在来想想清楚我好笨qwq,但是慢慢想清楚总是好的今天探究一个问题:线段树对区间值的维护的时刻一般来说,找到修改区间的时候,在打上......
  • U3D游戏研发-广州深圳(40-60W)
    岗位要求1.3年以上的客户端(引擎相关)开发经验2.扎实的编程基础,熟悉c/c++,c#,良好的逻辑思维能力,沟通能力,学习能力,有责任心3.对计算机图形学,图形算法,渲染技术......
  • 周总结7
    面向对象之封装,多态,反射派生实际应用importdatetimeimportjsonimportdatetimeimportjsonclassMyJsonEncoder(json.JSONEncoder):defdefault(s......
  • 56.dom如何映射数据
    所谓的映射机制就是页面的标签和js中获取的页面标签对象,无论修改哪一个,另一个都会随之更新; 映射原理:浏览器在渲染页面的时候给每一个元素都设置了很多内置的属性(包含......
  • 459. 重复的子字符串
    459.重复的子字符串给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。示例1:输入:s="abab"输出:true解释:可由子串"ab"重复两次构......
  • Oracle中新建数据表的两种方法
    首发微信公众号:SQL数据库运维原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1&sn=450e9e94fa709b5eeff0de371c62072b&chksm=ea37536cdd......
  • 抽象工厂
    其实一个简单的计算器就足够了,但是设计模式让它变得越来越复杂了。publicinterfaceICalculator{decimalInvoke(paramsdecimal[]args);}pu......
  • luffy项目(八)
    今日内容概要短信注册接口登录前端注册前端redis介绍python操作redisredis连接池今日内容详细短信发送接口,如何防止被人解析出地址后恶意使用?1.IP频率限......
  • CodeStar第六周周赛普及进阶组
    T1:倍数序列3本题难度中等,思路和LIS类似,用dp[i]表示以\(a_i\)结尾的倍数序列的个数。如果\(a_i\)是\(a_j\)的倍数,倍数序列个数就是\(dp[j]\),枚举所有\(j\)求......