提交 6ca50cb5 编写于 作者: W wizardforcel

2020-06-20 21:17:10

上级 9a354728
......@@ -101,7 +101,7 @@ gyöngykoszorút kötnék.
```
这些是 szerelem 文件的内容。
这些是`szerelem`文件的内容。
`szerelem.cpp`
......
......@@ -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`
......
......@@ -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();
......
......@@ -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);
......
......@@ -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()) {
......
......@@ -765,7 +765,7 @@ grid->addWidget(title, 0, 0, 1, 1);
```
这些代码行创建一个标签小部件,并将其放入网格布局中。 `addWidget()`方法具有五个参数。 第一个参数是子窗口小部件,在本例中为标签。 接下来的两个参数是放置标签的网格中的行和列。 最后,最后一个参数是 rowpan 和 colspan。 这些参数指定当前窗口小部件将跨越多少行。 在我们的情况下,标签将仅跨越一列和一行。
这些代码行创建一个标签小部件,并将其放入网格布局中。 `addWidget()`方法具有五个参数。 第一个参数是子窗口小部件,在本例中为标签。 接下来的两个参数是放置标签的网格中的行和列。 最后,最后一个参数是`rowspan``colspan`。 这些参数指定当前窗口小部件将跨越多少行。 在我们的情况下,标签将仅跨越一列和一行。
```
title->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
......
......@@ -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) {
......
......@@ -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`
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册