Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
zetcode-zh
提交
6ca50cb5
Z
zetcode-zh
项目概览
OpenDocCN
/
zetcode-zh
9 个月 前同步成功
通知
2
Star
157
Fork
40
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
zetcode-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
6ca50cb5
编写于
6月 20, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-06-20 21:17:10
上级
9a354728
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
32 addition
and
32 deletion
+32
-32
docs/gui/140.md
docs/gui/140.md
+1
-1
docs/gui/141.md
docs/gui/141.md
+7
-7
docs/gui/142.md
docs/gui/142.md
+12
-12
docs/gui/143.md
docs/gui/143.md
+4
-4
docs/gui/145.md
docs/gui/145.md
+2
-2
docs/gui/146.md
docs/gui/146.md
+1
-1
docs/gui/147.md
docs/gui/147.md
+2
-2
docs/gui/148.md
docs/gui/148.md
+2
-2
docs/gui/149.md
docs/gui/149.md
+1
-1
未找到文件。
docs/gui/140.md
浏览文件 @
6ca50cb5
...
...
@@ -101,7 +101,7 @@ gyöngykoszorút kötnék.
```
这些是
szerelem
文件的内容。
这些是
`szerelem`
文件的内容。
`szerelem.cpp`
...
...
docs/gui/141.md
浏览文件 @
6ca50cb5
...
...
@@ -4,7 +4,7 @@
在本章中,我们将使用字符串。 Qt4 具有用于处理字符串的
`QString`
类。 它非常强大,并且具有多种方法。
`QString`
类提供 Unicode 字符串。 它将字符串存储为 16 位
QChars
。 每个
`QChar`
对应一个 Unicode 4.0 字符。 与许多其他编程语言中的字符串不同,可以修改
`QString`
。
`QString`
类提供 Unicode 字符串。 它将字符串存储为 16 位
`QChars`
。 每个
`QChar`
对应一个 Unicode 4.0 字符。 与许多其他编程语言中的字符串不同,可以修改
`QString`
。
## 第一个例子
...
...
@@ -123,7 +123,7 @@ int main(void) {
```
我们介绍了五种初始化
QString
的方法。
我们介绍了五种初始化
`QString`
的方法。
```
QString str1 = "The night train";
...
...
@@ -153,7 +153,7 @@ QString str4 = QString::fromAscii(s2.data(), s2.size());
```
在这些代码行中,我们将标准 C++ 字符串转换为
QString
。 我们利用
`fromAscii()`
方法。 它需要一个指向字符数组的指针。 指针通过
`std::string`
的
`data()`
方法返回。 第二个参数是
`std::string`
的大小。
在这些代码行中,我们将标准 C++ 字符串转换为
`QString`
。 我们利用
`fromAscii()`
方法。 它需要一个指向字符数组的指针。 指针通过
`std::string`
的
`data()`
方法返回。 第二个参数是
`std::string`
的大小。
```
char s3[] = "A deep forest";
...
...
@@ -161,7 +161,7 @@ QString str5(s3);
```
这是一个 C 字符串。 它是一个字符数组。
`QString`
构造函数之一可以将
char
数组作为参数。
这是一个 C 字符串。 它是一个字符数组。
`QString`
构造函数之一可以将
`char`
数组作为参数。
`Output`
...
...
@@ -228,7 +228,7 @@ if (a.at(5).isNull()) {
```
如果我们尝试访问字符串字符范围之外的字符,则
`at()`
方法返回
null
。
如果我们尝试访问字符串字符范围之外的字符,则
`at()`
方法返回
`null`
。
`Output`
...
...
@@ -333,7 +333,7 @@ int main() {
```
将要替换的标记以
`%`
字符开头。 下一个字符是指定自变量的数字。 一个字符串可以有多个参数。
`arg()`
方法已重载,它可以接受整数,长数字,字符和
QChar
等。
将要替换的标记以
`%`
字符开头。 下一个字符是指定自变量的数字。 一个字符串可以有多个参数。
`arg()`
方法已重载,它可以接受整数,长数字,字符和
`QChar`
等。
```
QString s1 = "There are %1 white roses";
...
...
@@ -699,7 +699,7 @@ $ ./converts
## 字符
字符分为各种类别:数字,字母,空格和标点符号。 每个
`QString`
都由
QChar
组成。
`QChar`
具有
`isDigit()`
,
`isLetter()`
,
`isSpace()`
和
`isPunct()`
方法来执行作业。
字符分为各种类别:数字,字母,空格和标点符号。 每个
`QString`
都由
`QChar`
组成。
`QChar`
具有
`isDigit()`
,
`isLetter()`
,
`isSpace()`
和
`isPunct()`
方法来执行作业。
`letters.cpp`
...
...
docs/gui/142.md
浏览文件 @
6ca50cb5
...
...
@@ -200,9 +200,9 @@ Sun Apr 5 2015 comes after Sat Apr 5 2014
## 确定闰年
闰年是包含另一天的年份。 日历中额外一天的原因是天文日历年与日历年之间的差异。 日历年正好是 365 天,而天文学年(地球绕太阳公转的时间)是 365.25 天。 相差 6 个小时,这意味着在四年的时间里,我们一天中都没有。 因为我们希望日历与季节同步,所以每四年将 2 月增加一天。 (有例外。)在公历中,
February
年的 2 月有 29 天,而不是通常的 28 天。该年持续 366 天,而不是通常的 365 天。
闰年是包含另一天的年份。 日历中额外一天的原因是天文日历年与日历年之间的差异。 日历年正好是 365 天,而天文学年(地球绕太阳公转的时间)是 365.25 天。 相差 6 个小时,这意味着在四年的时间里,我们一天中都没有。 因为我们希望日历与季节同步,所以每四年将 2 月增加一天。 (有例外。)在公历中,
闰
年的 2 月有 29 天,而不是通常的 28 天。该年持续 366 天,而不是通常的 365 天。
`QDate::isLeapYear()`
静态方法确定年份是否为
a
年。
`QDate::isLeapYear()`
静态方法确定年份是否为
闰
年。
`leapyear.cpp`
...
...
@@ -227,14 +227,14 @@ int main() {
```
在示例中,我们有一个年份列表。 我们每年检查是否是
a
年。
在示例中,我们有一个年份列表。 我们每年检查是否是
闰
年。
```
QList<int> years({2010, 2011, 2012, 2013, 2014, 2015, 2016});
```
我们初始化一个年份列表。 这是 C++ 11 构造,因此,我们需要启用 C++ 11。 我们需要将
`CONFIG += c++11`
,
`QMAKE_CXXFLAGS += -std=c++11`
或
`QMAKE_CXXFLAGS += -std=c++0x`
添加到
.pro
文件。
我们初始化一个年份列表。 这是 C++ 11 构造,因此,我们需要启用 C++ 11。 我们需要将
`CONFIG += c++11`
,
`QMAKE_CXXFLAGS += -std=c++11`
或
`QMAKE_CXXFLAGS += -std=c++0x`
添加到
`.pro`
文件。
```
foreach (int year, years) {
...
...
@@ -327,7 +327,7 @@ Today is 10/14/15
|
`dddd`
| 本地化的长名称(例如,“星期一”到“星期日”)。 使用
`QDate::longDayName()`
。 |
|
`M`
| 以不带前导零(1 到 12)的数字表示的月份 |
|
`MM`
| 月份,以前导零(01 到 12)开头的数字 |
|
`MMM`
| 本地化月份的缩写名称(例如,“
Jan”到“ Dec
”)。 使用
`QDate::shortMonthName()`
。 |
|
`MMM`
| 本地化月份的缩写名称(例如,“
`Jan`
”到“
`Dec`
”)。 使用
`QDate::shortMonthName()`
。 |
|
`MMMM`
| 本地化的长月份名称(例如,“一月”到“十二月”)。 使用
`QDate::longMonthName()`
。 |
|
`y`
| 年份为两位数(00 到 99) |
|
`yyyy`
| 年份为四位数。 如果年份为负数,则还会附加一个减号。 |
...
...
@@ -368,7 +368,7 @@ out << "Today is " << cd.toString("yy/M/dd") << endl;
```
这是另一种常见的日期格式。 零件之间用斜杠(
/
)字符分隔。
`M`
指示符代表一个月,不带前导零(1 到 12)。
这是另一种常见的日期格式。 零件之间用斜杠(
`/`
)字符分隔。
`M`
指示符代表一个月,不带前导零(1 到 12)。
```
out << "Today is " << cd.toString("d.M.yyyy") << endl;
...
...
@@ -456,9 +456,9 @@ The time is 4:14 PM
|
`ss`
| 秒,带有前导零(00 到 59) |
|
`z`
| 不带前导零的毫秒数(0 到 999) |
|
`zz`
| 以零开头的毫秒数(000 到 999) |
|
`AP`
或
`A`
| 使用 AM/PM 显示。
`AP`
将被“
AM”或“PM
”替换。 |
|
`ap`
或
`a`
| 使用 am/pm 显示。
`ap`
将被“
am”或“pm
”替换。 |
|
`t`
| 时区(例如“
CEST
”) |
|
`AP`
或
`A`
| 使用 AM/PM 显示。
`AP`
将被“
`AM`
”或“
`PM`
”替换。 |
|
`ap`
或
`a`
| 使用 am/pm 显示。
`ap`
将被“
`am`
”或“
`pm`
”替换。 |
|
`t`
| 时区(例如“
`CEST`
”) |
Table: Time format specifiers
...
...
@@ -818,7 +818,7 @@ out << "The current date is " << cdt.date().toString() << endl;
```
此行使用
`date()`
方法检索
datetime
对象的日期部分。
此行使用
`date()`
方法检索
日期时间
对象的日期部分。
`Output`
...
...
@@ -990,7 +990,7 @@ Local datetime: Wed Oct 14 17:50:30 2015
## Unix 纪元
纪元是选择作为特定纪元起源的时间瞬间。 例如,在西方基督教国家,时间从耶稣出生的第 0 天开始。 另一个例子是法国共和党日历,使用了十二年。 这个时期是 1792 年 9 月 22 日宣布的共和纪元的开始,即宣布成立第一共和国并废除君主制的那一天。 电脑也有自己的纪元。 最受欢迎的时间之一是 Unix 时间。 Unix 纪元是 1970 年 1 月 1 日 UTC 时间 00:00:00(或
1970-01-01T00:00:00Z ISO 8601
)。 计算机中的日期和时间是根据自该计算机或平台的定义时期以来经过的秒数或时钟滴答数确定的。
纪元是选择作为特定纪元起源的时间瞬间。 例如,在西方基督教国家,时间从耶稣出生的第 0 天开始。 另一个例子是法国共和党日历,使用了十二年。 这个时期是 1792 年 9 月 22 日宣布的共和纪元的开始,即宣布成立第一共和国并废除君主制的那一天。 电脑也有自己的纪元。 最受欢迎的时间之一是 Unix 时间。 Unix 纪元是 1970 年 1 月 1 日 UTC 时间 00:00:00(或
`1970-01-01T00:00:00Z ISO8601`
)。 计算机中的日期和时间是根据自该计算机或平台的定义时期以来经过的秒数或时钟滴答数确定的。
```
$ date +%s
...
...
@@ -1048,7 +1048,7 @@ out << dt.toString() << endl;
```
`setTime_t()`
方法用于将 Unix 时间转换为
DateTime
,并将其格式化为易于阅读的格式。
`setTime_t()`
方法用于将 Unix 时间转换为
日期时间
,并将其格式化为易于阅读的格式。
```
QDateTime cd = QDateTime::currentDateTime();
...
...
docs/gui/143.md
浏览文件 @
6ca50cb5
...
...
@@ -166,7 +166,7 @@ while (!in.atEnd()) {
```
在
while 循环中,我们逐行读取文件,直到文件结束。 如果没有更多数据要从流中读取,则
`atEnd()`
方法返回 true
。
`readLine()`
方法从流中读取一行。
在
`while`
循环中,我们逐行读取文件,直到文件结束。 如果没有更多数据要从流中读取,则
`atEnd()`
方法返回
`true`
。
`readLine()`
方法从流中读取一行。
```
file.close();
...
...
@@ -530,7 +530,7 @@ if (dir.mkdir("mydir")) {
```
`mkdir()`
方法创建一个目录。 如果目录创建成功,则返回
true
。
`mkdir()`
方法创建一个目录。 如果目录创建成功,则返回
`true`
。
```
if (dir.exists("mydir2")) {
...
...
@@ -718,7 +718,7 @@ Whole suffix: 8.7.tar.gz
## 权限
文件系统中的文件具有保护系统。 文件带有标志,这些标志确定谁可以访问和修改它们。
`QFile::permissions()`
方法返回有关文件的 OR-
ed
标志的枚举。
文件系统中的文件具有保护系统。 文件带有标志,这些标志确定谁可以访问和修改它们。
`QFile::permissions()`
方法返回有关文件的 OR-
ED
标志的枚举。
`permissions.cpp`
...
...
@@ -801,7 +801,7 @@ int main(int argc, char *argv[]) {
```
该示例为给定文件生成类似 Unix 的权限列表。 有几种可能的用户类型:所有者,文件所属的组以及其余的称为其他用户。 前三个位置属于文件的所有者,后三个位置属于文件的组,后三个字符属于其他字符。 权限共有四种:读取(
r),写入或修改(w),执行(x)和无权限(-
)。
该示例为给定文件生成类似 Unix 的权限列表。 有几种可能的用户类型:所有者,文件所属的组以及其余的称为其他用户。 前三个位置属于文件的所有者,后三个位置属于文件的组,后三个字符属于其他字符。 权限共有四种:读取(
`r`
),写入或修改(
`w`
),执行(
`x`
)和无权限(
`-`
)。
```
QFile::Permissions ps = QFile::permissions(filename);
...
...
docs/gui/145.md
浏览文件 @
6ca50cb5
...
...
@@ -186,7 +186,7 @@ quit->setShortcut(tr("CTRL+Q"));
```
在这里,我们创建键盘快捷键。 通过按下此快捷方式,我们将运行
quit
操作,该操作将退出应用。
在这里,我们创建键盘快捷键。 通过按下此快捷方式,我们将运行
退出
操作,该操作将退出应用。
```
file->addSeparator();
...
...
@@ -305,7 +305,7 @@ viewst->setChecked(true);
```
我们创建一个
actiona
,并使用
`setCheckable()`
方法对其进行检查。
`setChecked()`
方法进行检查。
我们创建一个
动作
,并使用
`setCheckable()`
方法对其进行检查。
`setChecked()`
方法进行检查。
```
if (viewst->isChecked()) {
...
...
docs/gui/146.md
浏览文件 @
6ca50cb5
...
...
@@ -765,7 +765,7 @@ grid->addWidget(title, 0, 0, 1, 1);
```
这些代码行创建一个标签小部件,并将其放入网格布局中。
`addWidget()`
方法具有五个参数。 第一个参数是子窗口小部件,在本例中为标签。 接下来的两个参数是放置标签的网格中的行和列。 最后,最后一个参数是
rowpan 和 colspan
。 这些参数指定当前窗口小部件将跨越多少行。 在我们的情况下,标签将仅跨越一列和一行。
这些代码行创建一个标签小部件,并将其放入网格布局中。
`addWidget()`
方法具有五个参数。 第一个参数是子窗口小部件,在本例中为标签。 接下来的两个参数是放置标签的网格中的行和列。 最后,最后一个参数是
`rowspan`
和
`colspan`
。 这些参数指定当前窗口小部件将跨越多少行。 在我们的情况下,标签将仅跨越一列和一行。
```
title->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
...
...
docs/gui/147.md
浏览文件 @
6ca50cb5
...
...
@@ -225,7 +225,7 @@ void Move::moveEvent(QMoveEvent *e) {
```
在我们的代码编程示例中,我们对
move
事件做出反应。 我们确定窗口客户区左上角的当前 x,y 坐标,并将这些值设置为窗口标题。
在我们的代码编程示例中,我们对
移动
事件做出反应。 我们确定窗口客户区左上角的当前 x,y 坐标,并将这些值设置为窗口标题。
```
int x = e->pos().x();
...
...
@@ -492,7 +492,7 @@ startTimer(1000);
```
我们启动计时器。 每 1000
ms 会生成一个计时器事件。
我们启动计时器。 每 1000ms 会生成一个计时器事件。
```
void Timer::timerEvent(QTimerEvent *e) {
...
...
docs/gui/148.md
浏览文件 @
6ca50cb5
...
...
@@ -198,7 +198,7 @@ Figure: QSlider
## `QSpinBox`
`QSpinbox`
是一个小部件,用于处理整数和离散值集。 在我们的代码示例中,我们将有一个
Spinbox 小部件。 我们可以选择数字 0..99
。 当前选择的值显示在标签窗口小部件中。
`QSpinbox`
是一个小部件,用于处理整数和离散值集。 在我们的代码示例中,我们将有一个
`QSpinbox`
小部件。 我们可以选择数字
`0..99`
。 当前选择的值显示在标签窗口小部件中。
`spinbox.h`
...
...
@@ -221,7 +221,7 @@ class SpinBox : public QWidget {
```
这是
Spinbox
示例的头文件。
这是
`QSpinbox`
示例的头文件。
`spinbox.cpp`
...
...
docs/gui/149.md
浏览文件 @
6ca50cb5
...
...
@@ -322,7 +322,7 @@ void ListWidget::removeItem() {
```
`removeItem()`
从列表中删除特定项目。 首先,我们使用
`currentRow()`
方法获得当前选中的行。 (如果没有更多的行,则返回-1。)使用
`takeItem()`
方法删除当前选择的项目。
`removeItem()`
从列表中删除特定项目。 首先,我们使用
`currentRow()`
方法获得当前选中的行。 (如果没有更多的行,则返回
-1。)使用
`takeItem()`
方法删除当前选择的项目。
```
void ListWidget::clearItems(){
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录