Qt君


  • 首页

  • 关于

  • 归档

  • 搜索

使用C++模板获取数组长度

发表于 2019-02-28

利用模板的特性,在编译期就获取到数组长度.

  • 模板函数GetArrayLength

    1
    2
    3
    4
    5
    template <typename T, size_t N>
    inline size_t GetArrayLength(const T(&)[N])
    {
    return N;
    }
  • 示例

    1
    2
    3
    int array[] = {0, 1, 2, 3, 4, 5};
    cout << GetArrayLength(array) << endl;
    // 输出: 6

程序设计的Kiss原则

发表于 2019-02-26

简单原则(Keep It Simple and Stupid)

例子1

  • 猜疑返回值,不够明确

    1
    2
    3
    if (system("ls")) {
    // do something
    }
  • 明确做法

    1
    2
    3
    if (system("ls") != 0) {
    // do something
    }

例子2

  • 判断语句有逻辑语句,不够直观

    1
    2
    3
    if (system(i > 0 ? "ls" : "ls -la") != 0) {
    // do something
    }
  • 直观做法

    1
    2
    3
    4
    const char *cmdLine = i > 0 ? "ls" : "ls -la";
    if (system(cmdLine) != 0) {
    // do something
    }

兼容Qt4/Qt5版本Qml控件CheckBox

发表于 2019-02-26

复选框显示一个可切换(选中)或关闭(未选中)的选项按钮.

  • 导入方法: 文件导入
  • 兼容性: QtQuick 1.x与QtQuick 2.x
  • 继承: Item
阅读全文 »

坏味道的写法之交叉逻辑

发表于 2019-02-25

交叉逻辑主要造成逻辑模糊.

例子

  • 下列例子是将file1的内容写入到file2中.

坏味道伪代码

  • 交叉的逻辑导致理解不清晰
    `cpp
    File file2;
    File file1;

Content c = file1.read();
file2.write(c);

file1.close();
file2.close();


## 好味道伪代码
* 步骤分明容易理解
```cpp
File file1;
Content c = file1.read();
file1.close();

File file2;
file2.write(c);
file2.close();

qmake转换Makefile

发表于 2019-02-24

命令

1
qmake -o Makefile xxx.pro

兼容Qt4/Qt5版本Qml控件Slider

发表于 2019-02-23

通过滑动滑块选择一个值

  • 导入方法: 文件导入
  • 兼容性: QtQuick 1.x与QtQuick 2.x
  • 继承: Item
阅读全文 »

Qt获取多个屏幕分辨率

发表于 2019-02-22

通过QDesktopWidget的screenGeometry方法获取多个屏幕的分辨率

获取QDesktopWidget

  • QDesktopWidget类提供了对多屏幕信息的访问
    1
    QDesktopWidget *desktopWidget = QApplication::desktop();

使用screenGeometry方法获取分辨率

  • 接口方法

    1
    const QRect QDesktopWidget::screenGeometry(int screen = -1) const
  • 获取默认屏幕分辨率

    1
    2
    3
    QRect screenRect = desktopWidget->screenGeometry();
    screenRect.width();
    screenRect.height();
  • 获取其他外接屏幕分辨率将对应screen值传进screenGeometry中.

C/C++逗号运算符

发表于 2019-02-21

逗号运算符表达式取最后一个值返回。

特点

  • 优先级别最低;
  • 自左往右执行表达式;
  • 返回值为表达式最后一个.

例子1

  • 输出: 5
    1
    printf("%d", (1, 2, 3, 4, 5));

例子2

  • 赋值运算符优先级高于逗号运算符;
  • 先执行i=3*3后再执行i*5;
  • 输出: 45.
    1
    2
    int i = 0;
    printf("%d\n", (i = 3*3 , i*5));

例子3

  • 输出: 02468
    1
    2
    3
    for (int i = 0; i < 10; i++, i++) {
    printf("%d", i);
    }

使用lupdate生成Qt的ts翻译文件

发表于 2019-02-18

1. 通过项目文件生成

1.1 方法一

  • 项目文件(xxx.pro)需要定义一下方法

    1
    TRANSLATIONS += en.ts zh_CN.ts
  • 命令行执行

    1
    lupdate xxx.pro

1.2 方法二

1
lupdate xxx.pro -ts xxx.ts

2. 通过指定文件生成

1
lupdate xxx.cpp -ts xxx.ts
  • xxx.cpp为目标文件;
  • xxx.ts为输出文件

3. 需要生成qml中的qsTr翻译

  • 在项目文件中加入以下代码:

    1
    2
    3
    lupdate_only {
    SOURCES += xxx.qml
    }
  • 如需要多个qml文件则在其后添加多个则可;

  • 再执行上述方法即可。

兼容Qt4/Qt5版本的QML例程

发表于 2019-02-17

本篇文章介绍兼容Qt4与Qt5版本的Qml简单例程。由于Qt4与Qt5版本的qml文件不能使用宏来区分,所以使用qmake执行脚本来修改qml版本差异代码。(末尾源代码地址)

qml文件转换

  • 下列代码是项目文件代码,会在编译之前执行;
  • 主要作用为识别Qt版本然后替换对应qml文件中的import QtQuick 1.x或import QtQuick 2.x;
阅读全文 »
1…272829…32
Qt君

Qt君

313 日志
41 标签
© 2019 Qt君
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
粤ICP备 - 16070052号