Qt君


  • 首页

  • 关于

  • 归档

  • 搜索

Qt读取UTF8与GBK格式文件乱码问题

发表于 2019-02-16

window下文件一般为GBK格式文件,而Linux系统下文件一般为UTF8文件,当文件读取格式不匹配时,读取到的数据显示为乱码,所以需要进行转码.

GBK格式文件读取

1
2
3
4
5
QFile file("GBK.txt");
file.open(QFile::ReadOnly | QFile::Text);
QTextCodec *codec = QTextCodec::codecForName("GBK");
QString content = codec->toUnicode(file.readAll());
qDebug()<<"Display GBK.txt file"<<content;

UTF8格式文件读取

1
2
3
4
5
QFile file("UTF8.txt");
file.open(QFile::ReadOnly | QFile::Text);
QTextCodec *codec = QTextCodec::codecForName("UTF8");
QString content = codec->toUnicode(file.readAll());
qDebug()<<"Display UTF8.txt File: "<<content;
阅读全文 »

Qt窗口全屏方法

发表于 2019-02-15

方法一

  • 使用showFullScreen方法显示全屏
  • 示例:
    1
    2
    QWidget w;
    w.showFullScreen();

方法二

阅读全文 »

Qt简单屏幕截图(兼容Qt4/5)

发表于 2019-02-14
  • Qt4使用QPixmap::grabWindow接口获取指定屏幕;
  • Qt5使用QScreen 的grabWindow接口获取指定屏幕;
  • QApplication::desktop()获取根窗口;
  • QUuid::createUuid()产生唯一ID;
  • pixmap.save(name)保存截图到本地.

main.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <QApplication>
#include <QDesktopWidget>
#include <QScreen>
#include <QPixmap>
#include <QUuid>
#include <QDateTime>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0))
QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId());
#else if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
QScreen *screen = QGuiApplication::primaryScreen();
QPixmap pixmap = screen->grabWindow(QApplication::desktop()->winId());
#endif

QString name = QString("%1-%2.png").
arg(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss")).
arg(QUuid::createUuid().toString());

pixmap.save(name);

return 0;
}

qmake文件

1
2
3
4
5
6
7
8
9
10
QT += core

equals(QT_MAJOR_VERSION, 5) : QT += widgets

CONFIG -= app_bundle
TARGET = Screenshot

TEMPLATE = app

SOURCES += main.cpp

Qml异步加载图片

发表于 2019-02-13

当图片很大时,加载图片可能导致UI线程的阻塞,为了确保图片在加载过程中不会阻塞UI线程,将Image元素的’asynchronous’设置为true

1
2
3
4
Image {
asynchronous: true
source: "test.png"
}

Qt输出时间格式并嵌套翻译字段

发表于 2019-02-13

使用QString的arg接口,实现对时间的AM/PM的翻译显示

示例

1
2
QDateTime curDateTime = QDateTime::currentDateTime();
curDateTime.toString("yyyy-MM-dd %1:mm:ss %2").arg(hour()).arg(ap());

hour与ap函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
int hour()
{
int hour = QDateTime::currentDateTime().toString("hh").toInt();
if (getHourSystem())
return hour;
else
return hour > 12 ? (hour - 12) : hour;;
}

QString TimeModel::ap()
{
int hour = QDateTime::currentDateTime().toString("hh").toInt();
return hour > 12 ? QObject::tr("pm") : QObject::tr("am");
}

Linux命令行辅助符号

发表于 2019-02-11

命令成功则继续执行’&&’

  • 文件存在才执行删除操作
  • 示例
    1
    ls /home/file && rm /home/file

命令成功不继续执行’||’

  • 复制成功则打印成功输出
  • 示例
    1
    cp /home/file /home/file.bak || echo "Successful file replication!"

执行连接符’;’

  • 显示文件目录列表并打印ls输出状态
  • 示例
    1
    ls; echo $?

Linux命令参数前缀--,-和不加-的区别

发表于 2019-02-10
  • 前缀’-‘后面的参数是字符形式,如ls -lh
  • 前缀’–’后面的参数是单词形式,如ls --help
  • 前缀’-‘的是System V风格
  • 无前缀’-‘的是BSD风格

常用转义字符

发表于 2019-02-08
转义字符 ASCII码值(十进制) 解释
\0 000 空字符(NUL)
\a 007 响铃(BEL)
\b 008 退格(BS),将当前位置移到前一列
\t 009 水平制表(HT)(跳到下一个TAB位置)
\n 010 换行(LF),将当前位置移到下一行开头
\v 011 垂直制表(VT)
\f 012 换页(FF),将当前位置移到下页开头
\r 013 回车(CR),将当前位置移到本行开头
\“ 034 代表一个双引号字符
\‘ 039 代表一个单引号(撇号)字符
\? 063 代表一个问号
\\ 092 代表一个反斜线字符’’\’
\ddd 三位八进制 1到3位八进制数所代表的任意字符
\xhh 二位十六进制 1到2位十六进制所代表的任意字符

Ubuntu有趣的一个命令

发表于 2019-02-07

终端输入

1
apt-get moo

Doxygen常用注释词

发表于 2019-02-06
注释词 含义
file 文件名
brief 简介
details 细节
mainpage 工程概览
author 作者
email 邮箱
version 版本号
date 年-月-日
license 版权
return 描述返回值情况
retval 描述返回值类型
param [in] 输入参数说明
param [out] 输出参数说明
note 注解
warning 警告信息
1…282930…32
Qt君

Qt君

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