Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
zetcode-zh
提交
111a7037
Z
zetcode-zh
项目概览
OpenDocCN
/
zetcode-zh
8 个月 前同步成功
通知
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 搜索 >>
提交
111a7037
编写于
6月 28, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-06-28 16:09:18
上级
c432fba9
变更
76
隐藏空白更改
内联
并排
Showing
76 changed file
with
128 addition
and
128 deletion
+128
-128
docs/db/104.md
docs/db/104.md
+1
-1
docs/db/11.md
docs/db/11.md
+2
-2
docs/db/13.md
docs/db/13.md
+1
-1
docs/db/14.md
docs/db/14.md
+1
-1
docs/db/33.md
docs/db/33.md
+1
-1
docs/db/34.md
docs/db/34.md
+2
-2
docs/db/36.md
docs/db/36.md
+1
-1
docs/db/42.md
docs/db/42.md
+3
-3
docs/db/44.md
docs/db/44.md
+4
-4
docs/db/46.md
docs/db/46.md
+1
-1
docs/db/56.md
docs/db/56.md
+1
-1
docs/db/8.md
docs/db/8.md
+1
-1
docs/db/9.md
docs/db/9.md
+1
-1
docs/db/95.md
docs/db/95.md
+1
-1
docs/dotnet/100.md
docs/dotnet/100.md
+1
-1
docs/dotnet/138.md
docs/dotnet/138.md
+1
-1
docs/dotnet/142.md
docs/dotnet/142.md
+4
-4
docs/dotnet/143.md
docs/dotnet/143.md
+1
-1
docs/dotnet/147.md
docs/dotnet/147.md
+1
-1
docs/dotnet/90.md
docs/dotnet/90.md
+2
-2
docs/dotnet/92.md
docs/dotnet/92.md
+1
-1
docs/dotnet/94.md
docs/dotnet/94.md
+3
-3
docs/dotnet/99.md
docs/dotnet/99.md
+2
-2
docs/graph/14.md
docs/graph/14.md
+2
-2
docs/graph/41.md
docs/graph/41.md
+1
-1
docs/graph/53.md
docs/graph/53.md
+1
-1
docs/graph/64.md
docs/graph/64.md
+1
-1
docs/graph/9.md
docs/graph/9.md
+1
-1
docs/gui/102.md
docs/gui/102.md
+1
-1
docs/gui/110.md
docs/gui/110.md
+1
-1
docs/gui/13.md
docs/gui/13.md
+1
-1
docs/gui/131.md
docs/gui/131.md
+1
-1
docs/gui/134.md
docs/gui/134.md
+2
-2
docs/gui/136.md
docs/gui/136.md
+2
-2
docs/gui/151.md
docs/gui/151.md
+4
-4
docs/gui/152.md
docs/gui/152.md
+1
-1
docs/gui/16.md
docs/gui/16.md
+3
-3
docs/gui/162.md
docs/gui/162.md
+2
-2
docs/gui/164.md
docs/gui/164.md
+2
-2
docs/gui/173.md
docs/gui/173.md
+1
-1
docs/gui/182.md
docs/gui/182.md
+2
-2
docs/gui/209.md
docs/gui/209.md
+1
-1
docs/gui/217.md
docs/gui/217.md
+4
-4
docs/gui/218.md
docs/gui/218.md
+1
-1
docs/gui/226.md
docs/gui/226.md
+1
-1
docs/gui/227.md
docs/gui/227.md
+1
-1
docs/gui/242.md
docs/gui/242.md
+2
-2
docs/gui/25.md
docs/gui/25.md
+1
-1
docs/gui/250.md
docs/gui/250.md
+2
-2
docs/gui/251.md
docs/gui/251.md
+1
-1
docs/gui/268.md
docs/gui/268.md
+2
-2
docs/gui/276.md
docs/gui/276.md
+1
-1
docs/gui/277.md
docs/gui/277.md
+2
-2
docs/gui/28.md
docs/gui/28.md
+2
-2
docs/gui/286.md
docs/gui/286.md
+5
-5
docs/gui/287.md
docs/gui/287.md
+1
-1
docs/gui/295.md
docs/gui/295.md
+2
-2
docs/gui/296.md
docs/gui/296.md
+1
-1
docs/gui/30.md
docs/gui/30.md
+2
-2
docs/gui/304.md
docs/gui/304.md
+4
-4
docs/gui/305.md
docs/gui/305.md
+1
-1
docs/gui/328.md
docs/gui/328.md
+1
-1
docs/gui/336.md
docs/gui/336.md
+1
-1
docs/gui/34.md
docs/gui/34.md
+4
-4
docs/gui/35.md
docs/gui/35.md
+3
-3
docs/gui/41.md
docs/gui/41.md
+1
-1
docs/gui/45.md
docs/gui/45.md
+3
-3
docs/gui/47.md
docs/gui/47.md
+1
-1
docs/gui/6.md
docs/gui/6.md
+1
-1
docs/gui/66.md
docs/gui/66.md
+1
-1
docs/gui/97.md
docs/gui/97.md
+2
-2
docs/java/16.md
docs/java/16.md
+1
-1
docs/js/81.md
docs/js/81.md
+1
-1
docs/php/169.md
docs/php/169.md
+3
-3
docs/py/36.md
docs/py/36.md
+1
-1
docs/ruby/84.md
docs/ruby/84.md
+1
-1
未找到文件。
docs/db/104.md
浏览文件 @
111a7037
...
...
@@ -72,7 +72,7 @@ for car in rs:
```
在
“汽车”
表中创建了八辆汽车。
在
`Cars`
表中创建了八辆汽车。
```
py
Base
=
declarative_base
()
...
...
docs/db/11.md
浏览文件 @
111a7037
...
...
@@ -57,7 +57,7 @@ mysql> SELECT * FROM Books;
```
这是
“书籍”
表中的内容。
这是
`Books`
表中的内容。
```
sql
mysql
>
INSERT
INTO
Books
VALUES
(
3
,
'Crime and Punishment'
,
...
...
@@ -300,7 +300,7 @@ mysql> SELECT * FROM Books;
我们重新创建表
`Books`
。 这些是行。
假设我们想将
“列夫·托尔斯泰”更改为“列夫·尼古拉耶维奇·托尔斯泰”表
。 以下语句显示了如何完成此操作。
假设我们想将
`"Leo Tolstoy"`
更改
`'Lev Nikolayevich Tolstoy'`
。 以下语句显示了如何完成此操作。
```
sql
mysql
>
UPDATE
Books
SET
Author
=
'Lev Nikolayevich Tolstoy'
...
...
docs/db/13.md
浏览文件 @
111a7037
...
...
@@ -200,6 +200,6 @@ mysql> SELECT Name FROM Customers WHERE NOT EXISTS
```
在此查询中,我们返回
“预订”
表中没有条目的所有客户。 这两个 SQL 查询都是相关查询。
在此查询中,我们返回
`Reservations`
表中没有条目的所有客户。 这两个 SQL 查询都是相关查询。
MySQL 教程的这一部分专门针对 MySQL 子查询。
\ No newline at end of file
docs/db/14.md
浏览文件 @
111a7037
...
...
@@ -158,7 +158,7 @@ mysql> CREATE TABLE Students(Id INTEGER, Name VARCHAR(55),
```
我们有一个
`Students`
表。 在此表中,我们有一个
“证书”
列。 每个学生可以拥有 0、1 个或多个这些证书。 这与
`ENUM`
约束不同,在
`ENUM`
约束中,允许值列表中只能有一个不同的值。
我们有一个
`Students`
表。 在此表中,我们有一个
`Certificates`
列。 每个学生可以拥有 0、1 个或多个这些证书。 这与
`ENUM`
约束不同,在
`ENUM`
约束中,允许值列表中只能有一个不同的值。
```
sql
mysql
>
INSERT
INTO
Students
VALUES
(
1
,
'Paul'
,
'A1,B1'
);
...
...
docs/db/33.md
浏览文件 @
111a7037
...
...
@@ -1014,7 +1014,7 @@ $query = "SELECT * FROM Cars WHERE Id IN (1, 2, 3)";
```
这是要执行的查询。 它从
“汽车”
表中选择前三行。
这是要执行的查询。 它从
`Cars`
表中选择前三行。
```
php
echo
"We have "
.
mysql_num_fields
(
$rs
)
.
" fields
\n
"
;
...
...
docs/db/34.md
浏览文件 @
111a7037
...
...
@@ -418,7 +418,7 @@ mysql> select * from Authors;
## 测试 MySQL 预备和非预备的语句
对于以下两个示例,我们将使用
“测试”
表。 我们将执行一条普通语句和一条准备语句 5000 次。 我们检查执行时间是否有差异。
对于以下两个示例,我们将使用
`Testing`
表。 我们将执行一条普通语句和一条准备语句 5000 次。 我们检查执行时间是否有差异。
`JdbcNotPreparedTesting.java`
...
...
@@ -1658,7 +1658,7 @@ public class JdbcBatchUpdate {
```
这是用于批处理更新的示例程序。 我们从
“作者”
表中删除所有数据,然后插入新数据。 我们添加了一位新作者,
`Umberto Eco`
,以查看更改。
这是用于批处理更新的示例程序。 我们从
`Authors`
表中删除所有数据,然后插入新数据。 我们添加了一位新作者,
`Umberto Eco`
,以查看更改。
```
java
st
.
addBatch
(
"DROP TABLE IF EXISTS Authors2"
);
...
...
docs/db/36.md
浏览文件 @
111a7037
...
...
@@ -729,7 +729,7 @@ DataTable dt = ds.Tables["Authors"];
```
我们得到名为
“作者”
的表。 我们只给了
`DataSet`
一个表,但是它可以包含多个表。
我们得到名为
`Authors`
的表。 我们只给了
`DataSet`
一个表,但是它可以包含多个表。
```
cs
dt
.
WriteXml
(
"authors.xml"
);
...
...
docs/db/42.md
浏览文件 @
111a7037
...
...
@@ -61,7 +61,7 @@ sqlite> INSERT INTO Cars(Id) VALUES(4);
```
`INSERT`
语句省略了最后两列。 这些列将填充默认值,如果没有默认值,则填充
`NULL`
。
`Name`
列没有默认值,因此有一个
`NULL`
值。 在
`CREATE TABLE`
语句中,我们已指定
`Price`
列具有
“不可用”
默认值。
`INSERT`
语句省略了最后两列。 这些列将填充默认值,如果没有默认值,则填充
`NULL`
。
`Name`
列没有默认值,因此有一个
`NULL`
值。 在
`CREATE TABLE`
语句中,我们已指定
`Price`
列具有
`"Not available"`
默认值。
```
sql
sqlite
>
SELECT
*
FROM
Cars
WHERE
Id
=
4
;
...
...
@@ -70,7 +70,7 @@ Id|Name|Price
```
在第二列中,我们有一个
`NULL`
值。 第三个具有默认的
“不可用”
字符串。
在第二列中,我们有一个
`NULL`
值。 第三个具有默认的
`"Not available"`
字符串。
```
sql
sqlite
>
INSERT
INTO
Cars
VALUES
(
4
,
'Volvo'
,
29000
);
...
...
@@ -234,7 +234,7 @@ sqlite> SELECT * FROM Cars;
`UPDATE`
语句用于修改存储在数据库表的零行或更多行中的值的子集。
假设我们想在
`Cars`
表中将
“斯柯达”更改为“斯柯达明锐”
。 以下语句显示了如何完成此操作:
假设我们想在
`Cars`
表中将
`'Skoda'`
更改为
`'Skoda Octavia'`
。 以下语句显示了如何完成此操作:
```
sql
sqlite
>
.
read
cars
.
sql
...
...
docs/db/44.md
浏览文件 @
111a7037
...
...
@@ -55,7 +55,7 @@ Error: column BrandName is not unique
```
我们收到错误消息
“列
`BrandName`
不是唯一的”
。 只能有一个百事可乐品牌。
我们收到错误消息
`column BrandName is not unique`
。 只能有一个百事可乐品牌。
注意,
`PRIMARY KEY`
约束自动在其上定义了
`UNIQUE`
约束。
...
...
@@ -206,7 +206,7 @@ Error: constraint failed
```
如果尝试插入无效值,则会收到一条错误消息,提示
“约束失败”
。
如果尝试插入无效值,则会收到一条错误消息,提示
`constraint failed`
。
## SQLite 默认约束
...
...
@@ -218,7 +218,7 @@ sqlite> CREATE TABLE Hotels(Id INTEGER PRIMARY KEY, Name TEXT,
```
为了演示
`DEFAULT`
约束,我们创建了
`Hotels`
表。
`City`
列具有默认的
“不可用”
值。
为了演示
`DEFAULT`
约束,我们创建了
`Hotels`
表。
`City`
列具有默认的
`'not available'`
值。
```
sql
sqlite
>
INSERT
INTO
Hotels
(
Name
,
City
)
VALUES
(
'Kyjev'
,
'Bratislava'
);
...
...
@@ -232,6 +232,6 @@ Id Name City
```
在第一个语句中,我们同时提供酒店名称和城市名称。 在第二个语句中,我们仅提供酒店名称。 SQLite 将默认值(
“不可用”
文本)放在此处。
在第一个语句中,我们同时提供酒店名称和城市名称。 在第二个语句中,我们仅提供酒店名称。 SQLite 将默认值(
`'not available'`
文本)放在此处。
在 SQLite 教程的这一部分中,我们介绍了 SQLite 数据库支持的约束。
\ No newline at end of file
docs/db/46.md
浏览文件 @
111a7037
...
...
@@ -311,7 +311,7 @@ sqlite> SELECT date('now', '2 months');
```
在此示例中,
“2 个月”
是修饰语。 它会将当前日期增加两个月。 因此该函数返回从今天起两个月的日期。
在此示例中,
`'2 months'`
是修饰语。 它会将当前日期增加两个月。 因此该函数返回从今天起两个月的日期。
```
sql
sqlite
>
SELECT
date
(
'now'
,
'-55 days'
);
...
...
docs/db/56.md
浏览文件 @
111a7037
...
...
@@ -110,7 +110,7 @@ $dbh->disconnect();
```
我们从
“图像”
表中读取图像数据,并将其写入另一个文件,我们称为蘑菇
`2.jpg`
。
我们从
`IMAGE`
表中读取图像数据,并将其写入另一个文件,我们称为蘑菇
`2.jpg`
。
```
perl
my
$sth
=
$dbh
->
prepare
("
SELECT Data FROM Images WHERE Id=1
");
...
...
docs/db/8.md
浏览文件 @
111a7037
...
...
@@ -650,7 +650,7 @@ ERROR 1265 (01000): Data truncated for column 'Size' at row 1
```
由于列表中未提及
“大”
,因此我们会收到一条错误消息。
由于列表中未提及
`'Large'`
,因此我们会收到一条错误消息。
```
sql
mysql
>
SELECT
*
FROM
Sizes
;
...
...
docs/db/9.md
浏览文件 @
111a7037
...
...
@@ -23,7 +23,7 @@ mysql> CREATE TABLE Testing(Id INTEGER);
```
我们使用
`CREATE TABLE`
语句创建一个简单的测试表。 表名称是
“测试”
。 该表具有称为
`Id`
的一列。 列的数据类型为
`INTEGER`
。
我们使用
`CREATE TABLE`
语句创建一个简单的测试表。 表名称是
`Testing`
。 该表具有称为
`Id`
的一列。 列的数据类型为
`INTEGER`
。
```
sql
mysql
>
SHOW
CREATE
TABLE
Testing
;
...
...
docs/db/95.md
浏览文件 @
111a7037
...
...
@@ -1217,7 +1217,7 @@ java.sql.SQLSyntaxErrorException: 'TITL' is not a column in table or VTI 'USER12
```
执行失败,并显示
“'TITL'不是表中的列”
消息。 引发异常。 事务已回滚,并且未进行任何更改。
执行失败,并显示
`'TITL' is not a column in table`
消息。 引发异常。 事务已回滚,并且未进行任何更改。
```
java
ij
>
CONNECT
'
jdbc:derby:
testdb
'
;
...
...
docs/dotnet/100.md
浏览文件 @
111a7037
...
...
@@ -521,7 +521,7 @@ Message 5
```
`Dequeue()`
方法从集合中删除
“消息 1”。
`Peek()`
方法没有。 “消息 2”
保留在集合中。
`Dequeue()`
方法从集合中删除
`Message 1`
。
`Peek()`
方法没有。
`Message 2`
保留在集合中。
## `stack`
...
...
docs/dotnet/138.md
浏览文件 @
111a7037
...
...
@@ -64,7 +64,7 @@ if (n > 0)
```
使用
`if`
关键字,我们检查生成的数字是否大于零。
`if`
关键字后跟一对圆括号。 在方括号内,我们放置一个表达式。 该表达式产生布尔值。 如果布尔值是
`true`
,则执行两个大括号括起来的块。 在我们的例子中,字符串
“
`n`
变量为正”
被打印到终端上。 如果随机值为负,则不执行任何操作。 如果我们只有一个表达式,则大括号是可选的。
使用
`if`
关键字,我们检查生成的数字是否大于零。
`if`
关键字后跟一对圆括号。 在方括号内,我们放置一个表达式。 该表达式产生布尔值。 如果布尔值是
`true`
,则执行两个大括号括起来的块。 在我们的例子中,字符串
`The n variable is positive`
被打印到终端上。 如果随机值为负,则不执行任何操作。 如果我们只有一个表达式,则大括号是可选的。
```
cs
$
dotnet
run
...
...
docs/dotnet/142.md
浏览文件 @
111a7037
...
...
@@ -550,7 +550,7 @@ obj2.col.red = 255;
```
在这里,我们修改复制对象的成员字段。 我们增加
`id`
,将
`size`
更改为
“大”
,然后更改颜色对象的红色部分。
在这里,我们修改复制对象的成员字段。 我们增加
`id`
,将
`size`
更改为
`"big"`
,然后更改颜色对象的红色部分。
```
cs
Console
.
WriteLine
(
obj1
);
...
...
@@ -567,7 +567,7 @@ id: 24, size: big, color:(255, 42, 223)
```
我们可以看到 ID 是不同的(23 对 24)。 大小不同(
“小”与“大”
)。 但是,这两个实例的颜色对象的红色部分相同(255)。 更改克隆对象的成员值(
`id`
,
`size`
)不会影响原始对象。 更改引用对象(
`col`
)的成员也影响了原始对象。 换句话说,两个对象都引用内存中的同一颜色对象。
我们可以看到 ID 是不同的(23 对 24)。 大小不同(
`small`
与
`big`
)。 但是,这两个实例的颜色对象的红色部分相同(255)。 更改克隆对象的成员值(
`id`
,
`size`
)不会影响原始对象。 更改引用对象(
`col`
)的成员也影响了原始对象。 换句话说,两个对象都引用内存中的同一颜色对象。
### C# 深层复制
...
...
@@ -1017,7 +1017,7 @@ const int LIMIT = 333;
```
大于此常数的数字在我们的程序中被视为
“大”
。
大于此常数的数字在我们的程序中被视为
`big`
。
```
cs
public
BigValueException
(
string
msg
)
:
base
(
msg
)
{}
...
...
@@ -1034,7 +1034,7 @@ if (x > LIMIT)
```
如果该值大于限制,则抛出自定义异常。 我们给异常消息
“超出最大值”
。
如果该值大于限制,则抛出自定义异常。 我们给异常消息
`Exceeded the maximum value`
。
```
cs
}
catch
(
BigValueException
e
)
...
...
docs/dotnet/143.md
浏览文件 @
111a7037
...
...
@@ -326,7 +326,7 @@ protected new string _name = "Derived class";
```
我们将成员隐藏在
“派生”
类中。 为了消除编译器警告,我们使用
`new`
关键字。
我们将成员隐藏在
`Derived`
类中。 为了消除编译器警告,我们使用
`new`
关键字。
```
cs
public
override
string
Name
...
...
docs/dotnet/147.md
浏览文件 @
111a7037
...
...
@@ -689,7 +689,7 @@ Message 5
```
`Dequeue()`
方法从集合中删除
“消息 1”。
`Peek()`
方法没有。 “消息 2”
保留在集合中。
`Dequeue()`
方法从集合中删除
`Message 1`
。
`Peek()`
方法没有。
`Message 2`
保留在集合中。
## C# `Stack`
...
...
docs/dotnet/90.md
浏览文件 @
111a7037
...
...
@@ -28,7 +28,7 @@ Option Strict On
```
`Option Strict`
语句可以为
`On`
或
`Off`
。 默认值为
“关”
,以便与旧版 Visual Basic 程序向后兼容。 建议在所有新程序中使用此语句。 当该语句为
`On`
时,编译器将检测各种不良的编程习惯。
`Option Strict`
语句可以为
`On`
或
`Off`
。 默认值为
`Off`
,以便与旧版 Visual Basic 程序向后兼容。 建议在所有新程序中使用此语句。 当该语句为
`On`
时,编译器将检测各种不良的编程习惯。
```
vb
Module
Example
...
...
@@ -91,7 +91,7 @@ Dim name As String
```
`Dim`
关键字用于声明变量。 该变量称为
“名称”
。 与常量(在程序生命周期内仅存储一个值)不同,变量可以存储各种不同的值。
`As`
关键字定义变量的数据类型。 我们的变量将保存字符串值。
`Dim`
关键字用于声明变量。 该变量称为
`name`
。 与常量(在程序生命周期内仅存储一个值)不同,变量可以存储各种不同的值。
`As`
关键字定义变量的数据类型。 我们的变量将保存字符串值。
```
vb
name
=
Console
.
ReadLine
()
...
...
docs/dotnet/92.md
浏览文件 @
111a7037
...
...
@@ -301,7 +301,7 @@ Dim l As String = Left(str, 6)
```
此
`Left()`
函数的调用从字符串的左侧返回 6 个字符。 在我们的例子中,
“视觉”
。
此
`Left()`
函数的调用从字符串的左侧返回 6 个字符。 在我们的例子中,
`Visual`
。
```
vb
Dim
r
As
String
=
Right
(
str
,
5
)
...
...
docs/dotnet/94.md
浏览文件 @
111a7037
...
...
@@ -95,7 +95,7 @@ End Module
```
我们有性别变量。 它具有
“女性”
字符串。 布尔表达式的计算结果为
`false`
,我们在控制台中得到
`"It is a girl"`
。
我们有性别变量。 它具有
`"female"`
字符串。 布尔表达式的计算结果为
`false`
,我们在控制台中得到
`"It is a girl"`
。
```
vb
$
.
/
branch
.
exe
...
...
@@ -128,7 +128,7 @@ End Module
```
我们有一个数值变量,并测试它是否为负数或正数或等于零。 第一个表达式的计算结果为
`false`
。 满足第二个条件。 程序在控制台上输出
“
`a`
等于零”
。 分支的其余部分将被跳过。
我们有一个数值变量,并测试它是否为负数或正数或等于零。 第一个表达式的计算结果为
`false`
。 满足第二个条件。 程序在控制台上输出
`a equals to zero`
。 分支的其余部分将被跳过。
## `Select`语句
...
...
@@ -239,7 +239,7 @@ Adult
```
我们输入了 43,程序以
“成人”
字符串作为响应。
我们输入了 43,程序以
`Adult`
字符串作为响应。
## `While`语句
...
...
docs/dotnet/99.md
浏览文件 @
111a7037
...
...
@@ -579,7 +579,7 @@ Id: 24, Size: big, Color:(255, 42, 223)
```
我们可以看到 ID 分别为 23 和 24。大小不同。
“小”对“大”
。 但是,这两个实例的颜色对象的红色部分相同:255。更改克隆对象的成员值(
`Id`
,
`Size`
)不会影响原始对象。 更改引用对象(
`Col`
)的成员也影响了原始对象。 换句话说,两个对象都引用内存中的同一颜色对象。
我们可以看到 ID 分别为 23 和 24。大小不同。
`small`
和
`big`
。 但是,这两个实例的颜色对象的红色部分相同:255。更改克隆对象的成员值(
`Id`
,
`Size`
)不会影响原始对象。 更改引用对象(
`Col`
)的成员也影响了原始对象。 换句话说,两个对象都引用内存中的同一颜色对象。
要更改此行为,我们接下来将做一个深层复制。
...
...
@@ -919,7 +919,7 @@ Dim Const LIMIT As Integer = 333
```
大于此常数的数字在我们的程序中被视为
“大”
。
大于此常数的数字在我们的程序中被视为
`big`
。
```
vb
Sub
New
(
ByVal
msg
As
String
)
...
...
docs/graph/14.md
浏览文件 @
111a7037
...
...
@@ -10,7 +10,7 @@
## Java 推箱子游戏的开发
我们使用光标键控制推箱子对象。 我们也可以按
`R`
键重新启动电平。 将所有行李放在目的地区域后,游戏结束。 我们在窗口的左上角绘制
“已完成”
字符串。
我们使用光标键控制推箱子对象。 我们也可以按
`R`
键重新启动电平。 将所有行李放在目的地区域后,游戏结束。 我们在窗口的左上角绘制
`"Completed"`
字符串。
`Board.java`
...
...
@@ -623,7 +623,7 @@ if (isCompleted) {
```
如果完成该级别,则在窗口的左上角绘制
“已完成”
。
如果完成该级别,则在窗口的左上角绘制
`"Completed"`
。
```
java
case
KeyEvent
.
VK_LEFT
:
...
...
docs/graph/41.md
浏览文件 @
111a7037
...
...
@@ -107,7 +107,7 @@ if (visual != NULL && gdk_screen_is_composited(screen)) {
```
并非所有的显示器都支持此操作。 因此,我们检查屏幕是否支持合成并且返回的视觉效果不是
“无”
。 我们将屏幕的视觉效果设置为窗口的视觉效果。
并非所有的显示器都支持此操作。 因此,我们检查屏幕是否支持合成并且返回的视觉效果不是
`NULL`
。 我们将屏幕的视觉效果设置为窗口的视觉效果。
```
c
static
void
do_drawing
(
cairo_t
*
cr
)
...
...
docs/graph/53.md
浏览文件 @
111a7037
...
...
@@ -99,7 +99,7 @@ if visual != None and screen.is_composited():
```
并非所有的显示器都支持此操作。 因此,我们检查屏幕是否支持合成并且返回的视觉效果不是
“无”
。 我们将屏幕的视觉效果设置为窗口的视觉效果。
并非所有的显示器都支持此操作。 因此,我们检查屏幕是否支持合成并且返回的视觉效果不是
`NULL`
。 我们将屏幕的视觉效果设置为窗口的视觉效果。
```
py
def
on_draw
(
self
,
wid
,
cr
):
...
...
docs/graph/64.md
浏览文件 @
111a7037
...
...
@@ -10,7 +10,7 @@
## 开发
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 如果游戏结束,则画布中间会显示
“游戏结束”
消息。
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 如果游戏结束,则画布中间会显示
`"Game Over"`
消息。
`snake.html`
...
...
docs/graph/9.md
浏览文件 @
111a7037
...
...
@@ -729,7 +729,7 @@ private void gameFinished(Graphics2D g2d) {
```
`gameFinished()`
方法将
“游戏结束”或“胜利”
绘制到窗口的中间。
`gameFinished()`
方法将
`"Game Over"`
或
`"Victory"`
绘制到窗口的中间。
```
java
private
class
GameCycle
implements
ActionListener
{
...
...
docs/gui/102.md
浏览文件 @
111a7037
...
...
@@ -177,7 +177,7 @@ fileMenu.Append(qmi)
```
我们创建一个
`wx.MenuItem`
对象。 &字符指定加速键。 带
“&”
号后面的字符带有下划线。 实际的快捷方式由字符组合定义。 我们指定了
`Ctrl + Q`
字符。 因此,如果我们按
`Ctrl + Q`
,我们将关闭应用。 我们在&字符和快捷方式之间放置一个制表符。 这样,我们设法在它们之间留出一些空间。 为了提供菜单项的图标,我们调用
`SetBitmap()`
方法。 通过调用
`AppendItem()`
方法将手动创建的菜单项附加到菜单。
我们创建一个
`wx.MenuItem`
对象。 &字符指定加速键。 带
`&`
号后面的字符带有下划线。 实际的快捷方式由字符组合定义。 我们指定了
`Ctrl + Q`
字符。 因此,如果我们按
`Ctrl + Q`
,我们将关闭应用。 我们在&字符和快捷方式之间放置一个制表符。 这样,我们设法在它们之间留出一些空间。 为了提供菜单项的图标,我们调用
`SetBitmap()`
方法。 通过调用
`AppendItem()`
方法将手动创建的菜单项附加到菜单。
```
py
self
.
Bind
(
wx
.
EVT_MENU
,
self
.
OnQuit
,
id
=
APP_EXIT
)
...
...
docs/gui/110.md
浏览文件 @
111a7037
...
...
@@ -317,7 +317,7 @@ def OnScroll(self, e):
![
Burning widget
](
img/dd7a253f652075e2de872ac04ea9d446.jpg
)
图:
烧
录小部件
图:
刻
录小部件
## CPU 小部件
...
...
docs/gui/13.md
浏览文件 @
111a7037
...
...
@@ -2,7 +2,7 @@
> 原文: [http://zetcode.com/gui/winapi/controlsII/](http://zetcode.com/gui/winapi/controlsII/)
我们继续使用 Windows 控件。 我们将展示如何使用跟踪栏,工具提示和
“月”日
历控件。
我们继续使用 Windows 控件。 我们将展示如何使用跟踪栏,工具提示和
月
历控件。
## 跟踪栏
...
...
docs/gui/131.md
浏览文件 @
111a7037
...
...
@@ -359,7 +359,7 @@ fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file',
```
我们弹出
`QtGui.QFileDialog`
。
`getOpenFileName()`
方法中的第一个字符串是标题。 第二个字符串指定对话框的工作目录。 默认情况下,文件过滤器设置为
“所有文件(
*
)”
。
我们弹出
`QtGui.QFileDialog`
。
`getOpenFileName()`
方法中的第一个字符串是标题。 第二个字符串指定对话框的工作目录。 默认情况下,文件过滤器设置为
`All Files (*)`
。
```
py
f
=
open
(
fname
,
'r'
)
...
...
docs/gui/134.md
浏览文件 @
111a7037
...
...
@@ -222,7 +222,7 @@ if __name__ == '__main__':
```
在我们的代码示例中,窗口上有一个
`QtGui.QPushButton`
。 如果我们用鼠标左键单击该按钮,则会在控制台上显示
“按”
消息。 通过右键单击并移动按钮,我们在按钮小部件上执行拖放操作。
在我们的代码示例中,窗口上有一个
`QtGui.QPushButton`
。 如果我们用鼠标左键单击该按钮,则会在控制台上显示
`'press'`
消息。 通过右键单击并移动按钮,我们在按钮小部件上执行拖放操作。
```
py
class
Button
(
QtGui
.
QPushButton
):
...
...
@@ -270,7 +270,7 @@ def mousePressEvent(self, e):
```
如果我们用鼠标左键单击按钮,我们将在控制台上打印
“按”
。 注意,我们也在父对象上调用了
`mousePressEvent()`
方法。 否则,我们将看不到按钮被按下。
如果我们用鼠标左键单击按钮,我们将在控制台上打印
`'press'`
。 注意,我们也在父对象上调用了
`mousePressEvent()`
方法。 否则,我们将看不到按钮被按下。
```
py
position
=
e
.
pos
()
...
...
docs/gui/136.md
浏览文件 @
111a7037
...
...
@@ -209,10 +209,10 @@ def changeValue(self, value):
```
当我们移动滑块时,将调用
`changeValue()`
方法。 在方法内部,我们发送带有参数的自定义
`updateBW`
信号。 该参数是滑块的当前值。 该值随后用于计算
“刻录”
小部件的容量。 然后将自定义窗口小部件重新粉刷。
当我们移动滑块时,将调用
`changeValue()`
方法。 在方法内部,我们发送带有参数的自定义
`updateBW`
信号。 该参数是滑块的当前值。 该值随后用于计算
刻录
小部件的容量。 然后将自定义窗口小部件重新粉刷。
![
The burning widget
](
img/389242593dddf452a300c2d235530a49.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 PyQt4 教程的这一部分中,我们创建了一个自定义小部件。
\ No newline at end of file
docs/gui/151.md
浏览文件 @
111a7037
...
...
@@ -8,7 +8,7 @@
## 刻录小部件
在下一个示例中,我们创建一个自定义的
烧
录小部件。 可以在 Nero 或 K3B 之类的应用中看到此小部件。 该小部件将从头开始创建。
在下一个示例中,我们创建一个自定义的
刻
录小部件。 可以在 Nero 或 K3B 之类的应用中看到此小部件。 该小部件将从头开始创建。
`burning.h`
...
...
@@ -288,7 +288,7 @@ QString num[] = { "75", "150", "225", "300", "375", "450",
```
我们使用这些数字来构建
烧
录小部件的比例。
我们使用这些数字来构建
刻
录小部件的比例。
```
cpp
int
width
=
size
().
width
();
...
...
@@ -363,6 +363,6 @@ int main(int argc, char *argv[]) {
![
The Burning widget
](
img/519811b6a406d2ac1af34740c57a901e.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 Qt4 教程的这一部分中,我们创建了一个自定义的烧录小部件。
\ No newline at end of file
在 Qt4 教程的这一部分中,我们创建了一个自定义的刻录小部件。
\ No newline at end of file
docs/gui/152.md
浏览文件 @
111a7037
...
...
@@ -840,7 +840,7 @@ void Breakout::finishGame(QPainter *painter, QString message) {
```
`finishGame()`
方法在窗口中心绘制一条最终消息。 它是
“游戏失败”或“胜利”
。
`QFontMetrics'`
`width()`
用于计算字符串的宽度。
`finishGame()`
方法在窗口中心绘制一条最终消息。 它是
`"Game Over"`
或
`"Victory"`
。
`QFontMetrics'`
`width()`
用于计算字符串的宽度。
```
cpp
void
Breakout
::
drawObjects
(
QPainter
*
painter
)
{
...
...
docs/gui/16.md
浏览文件 @
111a7037
...
...
@@ -6,7 +6,7 @@
## 刻录控件
可以在各种媒体刻录应用中找到此控件,例如 Nero
烧
录 ROM。
可以在各种媒体刻录应用中找到此控件,例如 Nero
刻
录 ROM。
```
c
#include <windows.h>
...
...
@@ -198,6 +198,6 @@ LRESULT CALLBACK PanelProc(HWND hwnd, UINT msg,
![
Burning control
](
img/52c33bbda7a2cb616fe6ef5ed86671b9.jpg
)
图:
烧
录控件
图:
刻
录控件
在 Windows API 教程的这一部分中,我们创建了烧录自定义控件。
\ No newline at end of file
在 Windows API 教程的这一部分中,我们创建了刻录自定义控件。
\ No newline at end of file
docs/gui/162.md
浏览文件 @
111a7037
...
...
@@ -218,7 +218,7 @@ if __name__ == '__main__':
```
在我们的代码示例中,窗口上有一个
`QtGui.QPushButton`
。 如果我们用鼠标左键单击该按钮,则会在控制台上打印
“按”
。 通过右键单击并移动按钮,我们在按钮小部件上执行拖放操作。
在我们的代码示例中,窗口上有一个
`QtGui.QPushButton`
。 如果我们用鼠标左键单击该按钮,则会在控制台上打印
`'press'`
。 通过右键单击并移动按钮,我们在按钮小部件上执行拖放操作。
```
py
class
Button
(
QtGui
.
QPushButton
):
...
...
@@ -265,7 +265,7 @@ def mousePressEvent(self, e):
```
如果我们用鼠标左键单击按钮,我们将在控制台上打印
“按”
。 注意,我们也在父对象上调用了
`mousePressEvent()`
方法。 否则,我们将看不到按钮被按下。
如果我们用鼠标左键单击按钮,我们将在控制台上打印
`'press'`
。 注意,我们也在父对象上调用了
`mousePressEvent()`
方法。 否则,我们将看不到按钮被按下。
```
py
position
=
e
.
pos
()
...
...
docs/gui/164.md
浏览文件 @
111a7037
...
...
@@ -207,10 +207,10 @@ def changeValue(self, value):
```
当我们移动滑块时,将调用
`changeValue()`
方法。 在方法内部,我们发送带有参数的自定义
`updateBW`
信号。 该参数是滑块的当前值。 该值随后用于计算
“刻录”
小部件的容量。 然后将自定义窗口小部件重新粉刷。
当我们移动滑块时,将调用
`changeValue()`
方法。 在方法内部,我们发送带有参数的自定义
`updateBW`
信号。 该参数是滑块的当前值。 该值随后用于计算
刻录
小部件的容量。 然后将自定义窗口小部件重新粉刷。
![
The Burning widget
](
img/5754b9c4561cc6a79147332ec7006b43.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 PySide 教程的这一部分中,我们创建了一个自定义小部件。
\ No newline at end of file
docs/gui/173.md
浏览文件 @
111a7037
...
...
@@ -457,7 +457,7 @@ proc gameOver {} {
```
如果游戏结束,我们将删除画布上的所有项目。 然后,在屏幕中央绘制
“游戏结束”
。
如果游戏结束,我们将删除画布上的所有项目。 然后,在屏幕中央绘制
`"Game Over"`
。
![
Nibbles
](
img/ad2ba9d5f8b693df68135cc6d9455d79.jpg
)
...
...
docs/gui/182.md
浏览文件 @
111a7037
...
...
@@ -8,7 +8,7 @@
## 开发
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 游戏立即开始。 游戏结束后,窗口中央将显示
“游戏结束”
消息。
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 游戏立即开始。 游戏结束后,窗口中央将显示
`"Game Over"`
消息。
`Board.java`
...
...
@@ -327,7 +327,7 @@ if (inGame) {
```
在
`doPainting()`
方法内部,我们检查
`inGame`
变量。 如果是真的,我们将绘制对象-苹果和蛇关节。 否则,我们显示
“游戏结束”
文本。
在
`doPainting()`
方法内部,我们检查
`inGame`
变量。 如果是真的,我们将绘制对象-苹果和蛇关节。 否则,我们显示
`"Game Over"`
文本。
```
java
private
void
drawObjects
(
Event
e
)
{
...
...
docs/gui/209.md
浏览文件 @
111a7037
...
...
@@ -10,7 +10,7 @@
## 开发
蛇的每个关节的大小为 10px。 蛇由光标键控制。 最初,蛇具有三个关节。 游戏立即开始。 游戏结束后,我们在状态栏小部件中显示
“游戏结束”
消息。
蛇的每个关节的大小为 10px。 蛇由光标键控制。 最初,蛇具有三个关节。 游戏立即开始。 游戏结束后,我们在状态栏小部件中显示
`"Game Over"`
消息。
`board.java`
...
...
docs/gui/217.md
浏览文件 @
111a7037
...
...
@@ -110,7 +110,7 @@ public class Burning extends QWidget {
```
在这个文件中,我们创建了
烧
录小部件。
在这个文件中,我们创建了
刻
录小部件。
```
java
public
class
Burning
extends
QWidget
{
...
...
@@ -140,7 +140,7 @@ private String num[] = {
```
我们使用这些数字来构建
烧
录小部件的比例。
我们使用这些数字来构建
刻
录小部件的比例。
```
java
@Override
...
...
@@ -305,7 +305,7 @@ hbox.addWidget(widget, 0);
```
我们创建了
烧
录小部件的实例,并将其添加到水平框中。
我们创建了
刻
录小部件的实例,并将其添加到水平框中。
```
java
public
void
valueChanged
(
int
val
)
{
...
...
@@ -328,6 +328,6 @@ public int getCurrentWidth() {
![
The Burning widget
](
img/d59ddf85ead4b941bf957c570a19309c.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 QtJambi 教程的这一部分中,我们演示了如何创建自定义窗口小部件。
\ No newline at end of file
docs/gui/218.md
浏览文件 @
111a7037
...
...
@@ -263,7 +263,7 @@ if (inGame) {
```
在
`paintEvent()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`paintEvent()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
java
private
void
drawObjects
(
QPainter
painter
)
{
...
...
docs/gui/226.md
浏览文件 @
111a7037
...
...
@@ -217,6 +217,6 @@ end
![
Burning widget
](
img/98d1c8baa28dc2806aee2c2fdb46e4d2.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在本章中,我们使用 GTK 和 Ruby 编程语言创建了一个自定义小部件。
\ No newline at end of file
docs/gui/227.md
浏览文件 @
111a7037
...
...
@@ -295,7 +295,7 @@ end
```
在
`on_draw`
方法内部,我们检查
`@inGame`
变量。 如果是真的,我们绘制对象:苹果和蛇关节。 否则,我们显示
“游戏结束”
文本。
在
`on_draw`
方法内部,我们检查
`@inGame`
变量。 如果是真的,我们绘制对象:苹果和蛇关节。 否则,我们显示
`"Game Over"`
文本。
```
rb
def
draw_objects
cr
...
...
docs/gui/242.md
浏览文件 @
111a7037
...
...
@@ -8,7 +8,7 @@
## 刻录小部件
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
烧
录 ROM)中找到此小部件。
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
刻
录 ROM)中找到此小部件。
`burning.cs`
...
...
@@ -204,6 +204,6 @@ void OnChanged(object sender, EventArgs args)
![
Burning widget
](
img/e2235d128fceb509a7f7200eb41349a0.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在本章中,我们在 GTK# 中创建了一个自定义窗口小部件。
\ No newline at end of file
docs/gui/25.md
浏览文件 @
111a7037
...
...
@@ -358,7 +358,7 @@ fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
```
我们弹出
`QFileDialog`
。
`getOpenFileName()`
方法中的第一个字符串是标题。 第二个字符串指定对话框的工作目录。 默认情况下,文件过滤器设置为
“所有文件(
*
)”
。
我们弹出
`QFileDialog`
。
`getOpenFileName()`
方法中的第一个字符串是标题。 第二个字符串指定对话框的工作目录。 默认情况下,文件过滤器设置为
`All Files (*)`
。
```
py
if
fname
[
0
]:
...
...
docs/gui/250.md
浏览文件 @
111a7037
...
...
@@ -10,7 +10,7 @@
## 刻录小部件
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
烧
录 ROM)中找到此小部件。
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
刻
录 ROM)中找到此小部件。
`custom.vb`
...
...
@@ -275,6 +275,6 @@ End Sub
![
Burning widget
](
img/062e0fe5157a91f5fb036ffb3e350869.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在本章中,我们使用 GTK# 和 Visual Basic 创建了一个自定义窗口小部件。
\ No newline at end of file
docs/gui/251.md
浏览文件 @
111a7037
...
...
@@ -286,7 +286,7 @@ End If
```
在
`OnExpose`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`OnExpose`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
vb
Private
Sub
DrawObjects
(
ByVal
cc
As
Cairo
.
Context
)
...
...
docs/gui/268.md
浏览文件 @
111a7037
...
...
@@ -8,7 +8,7 @@
## 刻录小部件
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
烧
录 ROM)中找到此小部件。
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
刻
录 ROM)中找到此小部件。
`burning.py`
...
...
@@ -197,6 +197,6 @@ def on_changed(self, widget):
![
Burning widget
](
img/feb3b93e26091d1e6e3bdaaad9382a6f.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在本章中,我们在 PyGTK 中创建了一个自定义小部件。
\ No newline at end of file
docs/gui/276.md
浏览文件 @
111a7037
...
...
@@ -224,6 +224,6 @@ public function on_changed($sender) {
![
Burning widget
](
img/ba69f46f9147f0768c89af8b06b0a8f1.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在本章中,我们使用 GTK 和 PHP 编程语言创建了一个自定义窗口小部件。
\ No newline at end of file
docs/gui/277.md
浏览文件 @
111a7037
...
...
@@ -288,7 +288,7 @@ if ($this->inGame) {
```
在
`on_expose()`
方法内部,我们检查
`$this->inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`on_expose()`
方法内部,我们检查
`$this->inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
php
public
function
draw_objects
(
$cr
)
{
...
...
@@ -317,7 +317,7 @@ public function draw_objects($cr) {
`draw_objects()`
方法绘制苹果和蛇的关节。 蛇的第一个关节是其头部,用红色圆圈表示。
如果游戏结束,则调用
`game_over()`
方法。 此方法在窗口中心显示
“游戏结束”
。
如果游戏结束,则调用
`game_over()`
方法。 此方法在窗口中心显示
`"Game Over"`
。
```
php
$c_x
=
$this
->
get_allocation
()
->
width
/
2
;
...
...
docs/gui/28.md
浏览文件 @
111a7037
...
...
@@ -228,7 +228,7 @@ if __name__ == '__main__':
```
在我们的代码示例中,窗口上有一个
`QPushButton`
。 如果我们用鼠标左键单击该按钮,则会在控制台上显示
“按”
消息。 通过右键单击并移动按钮,我们可以对按钮小部件执行拖放操作。
在我们的代码示例中,窗口上有一个
`QPushButton`
。 如果我们用鼠标左键单击该按钮,则会在控制台上显示
`'press'`
消息。 通过右键单击并移动按钮,我们可以对按钮小部件执行拖放操作。
```
py
class
Button
(
QPushButton
):
...
...
@@ -276,7 +276,7 @@ def mousePressEvent(self, e):
```
如果我们用鼠标左键单击按钮,我们将在控制台上打印
“按”
。 注意,我们也在父对象上调用了
`mousePressEvent()`
方法。 否则,我们将看不到按钮被按下。
如果我们用鼠标左键单击按钮,我们将在控制台上打印
`'press'`
。 注意,我们也在父对象上调用了
`mousePressEvent()`
方法。 否则,我们将看不到按钮被按下。
```
py
position
=
e
.
pos
()
...
...
docs/gui/286.md
浏览文件 @
111a7037
...
...
@@ -6,7 +6,7 @@
大多数工具包通常仅提供最常用的窗口小部件,例如按钮,文本窗口小部件,滑块等。没有工具箱可以提供所有可能的窗口小部件。 程序员必须自己创建此类小部件。 他们使用工具箱提供的绘图工具来完成此任务。 有两种可能性。 程序员可以修改或增强现有的小部件。 或者,他可以从头开始创建自定义窗口小部件。
在本章中,我们将创建两个自定义窗口小部件。
烧
录小部件和 Led 小部件。
在本章中,我们将创建两个自定义窗口小部件。
刻
录小部件和 Led 小部件。
## 刻录小部件
...
...
@@ -106,7 +106,7 @@ public class Burning : QWidget
```
在这个文件中,我们创建了
烧
录小部件。
在这个文件中,我们创建了
刻
录小部件。
```
cs
public
class
Burning
:
QWidget
...
...
@@ -139,7 +139,7 @@ String[] num =
```
我们使用这些数字来构建
烧
录小部件的比例。
我们使用这些数字来构建
刻
录小部件的比例。
```
cs
protected
override
void
OnPaintEvent
(
QPaintEvent
pe
)
...
...
@@ -305,7 +305,7 @@ hbox.AddWidget(widget, 0);
```
我们创建了
烧
录小部件的实例,并将其添加到水平框中。
我们创建了
刻
录小部件的实例,并将其添加到水平框中。
```
cs
[
Q_SLOT
]
...
...
@@ -331,7 +331,7 @@ public int GetCurrentWidth()
![
The Burning widget
](
img/1234390d2ead79a7b2646245d2882e8c.jpg
)
图:
烧
录小部件
图:
刻
录小部件
## Led 小部件
...
...
docs/gui/287.md
浏览文件 @
111a7037
...
...
@@ -271,7 +271,7 @@ if (inGame)
```
在
`PaintEvent()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`PaintEvent()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
cs
void
DrawObjects
(
QPainter
painter
)
...
...
docs/gui/295.md
浏览文件 @
111a7037
...
...
@@ -154,7 +154,7 @@ app.exec
```
在这个文件中,我们创建了
烧
录小部件。
在这个文件中,我们创建了
刻
录小部件。
```
rb
class
Burning
<
Qt
::
Widget
...
...
@@ -278,6 +278,6 @@ end
![
The Burning widget
](
img/8c8b2b7270eee32a743a32c456c17ab8.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 Ruby Qt 教程的这一部分中,我们已经演示了如何创建自定义窗口小部件。
\ No newline at end of file
docs/gui/296.md
浏览文件 @
111a7037
...
...
@@ -248,7 +248,7 @@ end
```
在
`paintEvent`
方法内部,我们检查
`@inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`paintEvent`
方法内部,我们检查
`@inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
rb
def
drawObjects
painter
...
...
docs/gui/30.md
浏览文件 @
111a7037
...
...
@@ -217,10 +217,10 @@ def changeValue(self, value):
```
当我们移动滑块时,将调用
`changeValue()`
方法。 在方法内部,我们发送带有参数的自定义
`updateBW`
信号。 该参数是滑块的当前值。 该值随后用于计算
“刻录”
小部件的容量。 然后将自定义窗口小部件重新粉刷。
当我们移动滑块时,将调用
`changeValue()`
方法。 在方法内部,我们发送带有参数的自定义
`updateBW`
信号。 该参数是滑块的当前值。 该值随后用于计算
刻录
小部件的容量。 然后将自定义窗口小部件重新粉刷。
![
The burning widget
](
img/21f0b045bcbff1f1a8060ad01a9504cf.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 PyQt5 教程的这一部分中,我们创建了一个自定义小部件。
\ No newline at end of file
docs/gui/304.md
浏览文件 @
111a7037
...
...
@@ -109,7 +109,7 @@ End Namespace
```
在这个文件中,我们创建了
烧
录小部件。
在这个文件中,我们创建了
刻
录小部件。
```
vb
Public
Class
Burning
...
...
@@ -141,7 +141,7 @@ Dim num() As String = { _
```
我们使用这些数字来构建
烧
录小部件的比例。
我们使用这些数字来构建
刻
录小部件的比例。
```
vb
Protected
Overrides
Sub
PaintEvent
(
ByVal
e
As
QPaintEvent
)
...
...
@@ -306,7 +306,7 @@ hbox.AddWidget(widget, 0)
```
我们创建了
烧
录小部件的实例,并将其添加到水平框中。
我们创建了
刻
录小部件的实例,并将其添加到水平框中。
```
vb
<
Q_SLOT
()
>
_
...
...
@@ -330,6 +330,6 @@ End Function
![
The Burning widget
](
img/a1802ae945098490c0ea330656bdbf6b.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 Visual Basic Qyoto 教程的这一部分中,我们演示了如何创建自定义窗口小部件。
\ No newline at end of file
docs/gui/305.md
浏览文件 @
111a7037
...
...
@@ -282,7 +282,7 @@ End If
```
在
`PaintEvent()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`PaintEvent()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
vb
Private
Sub
DrawObjects
(
ByVal
painter
As
QPainter
)
...
...
docs/gui/328.md
浏览文件 @
111a7037
...
...
@@ -230,7 +230,7 @@ def paint(self, g):
```
在
`paint()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
在
`paint()`
方法内部,我们检查
`inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
```
py
def
drawObjects
(
self
,
g
):
...
...
docs/gui/336.md
浏览文件 @
111a7037
...
...
@@ -313,7 +313,7 @@ end
```
在
`paint`
方法内部,我们检查
`@inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
“游戏结束”
文本。
`Toolkit.getDefaultToolkit.sync`
方法可确保显示为最新。 这对于动画很有用。
在
`paint`
方法内部,我们检查
`@inGame`
变量。 如果为真,则绘制对象。 苹果和蛇的关节。 否则,我们显示
`"Game Over"`
文本。
`Toolkit.getDefaultToolkit.sync`
方法可确保显示为最新。 这对于动画很有用。
```
rb
def
drawObjects
g
...
...
docs/gui/34.md
浏览文件 @
111a7037
...
...
@@ -60,7 +60,7 @@ out << a << endl;
```
终端上印有
“我爱象棋”
。
终端上印有
`I love chess`
。
```
cpp
out
<<
"The a string has "
<<
a
.
count
()
...
...
@@ -419,21 +419,21 @@ out << str.right(5) << endl;
```
通过
`right()`
方法,我们获得
`str`
字符串的最右边五个字符。 将打印
“火车”
。
通过
`right()`
方法,我们获得
`str`
字符串的最右边五个字符。 将打印
`train`
。
```
cpp
out
<<
str
.
left
(
9
)
<<
endl
;
```
使用
`left()`
方法,我们获得
`str`
字符串的最左边九个字符。 将打印
“夜晚”
。
使用
`left()`
方法,我们获得
`str`
字符串的最左边九个字符。 将打印
`night`
。
```
cpp
out
<<
str
.
mid
(
4
,
5
)
<<
endl
;
```
使用
`mid()`
方法,我们从第 4 个位置开始得到 5 个字符。 打印
“夜晚”
。
使用
`mid()`
方法,我们从第 4 个位置开始得到 5 个字符。 打印
`night`
。
```
cpp
QString
str2
(
"The big apple"
);
...
...
docs/gui/35.md
浏览文件 @
111a7037
...
...
@@ -344,12 +344,12 @@ Today is 10/31/15
| --- | --- |
|
`d`
| 不带前导零(1 到 31)的日期 |
|
`dd`
| 带前导零(01 到 31)的日期 |
|
`ddd`
| 本地化日期的缩写(例如,
“周一”到“周日”
)。 使用
`QDate::shortDayName()`
。 |
|
`dddd`
| 本地化的长名称(例如,
“星期一”到“星期日”
)。 使用
`QDate::longDayName()`
。 |
|
`ddd`
| 本地化日期的缩写(例如,
`Mon`
到
`Sun`
)。 使用
`QDate::shortDayName()`
。 |
|
`dddd`
| 本地化的长名称(例如,
`Monday`
到
`Sunday`
)。 使用
`QDate::longDayName()`
。 |
|
`M`
| 不带前导零(1 到 12)的月份 |
|
`MM`
| 前导零(01 到 12)的月份 |
|
`MMM`
| 本地化月份的缩写名称(例如,
`"Jan"`
到
`"Dec"`
)。 使用
`QDate::shortMonthName()`
。 |
|
`MMMM`
| 本地化的长月份名称(例如,
“一月”到“十二月”
)。 使用
`QDate::longMonthName()`
。 |
|
`MMMM`
| 本地化的长月份名称(例如,
`January`
到
`December`
)。 使用
`QDate::longMonthName()`
。 |
|
`y`
| 两位数(00 到 99)的年份 |
|
`yyyy`
| 四位数的年份。 如果年份为负数,则还会附加一个减号。 |
...
...
docs/gui/41.md
浏览文件 @
111a7037
...
...
@@ -368,7 +368,7 @@ void Disconnect::onClick() {
```
如果单击“单击”按钮,则将
“单击按钮”
文本发送到终端窗口。
如果单击“单击”按钮,则将
`"Button clicked"`
文本发送到终端窗口。
```
cpp
void
Disconnect
::
onCheck
(
int
state
)
{
...
...
docs/gui/45.md
浏览文件 @
111a7037
...
...
@@ -286,7 +286,7 @@ QString num[] = { "75", "150", "225", "300", "375", "450",
```
我们使用这些数字来构建
烧
录小部件的比例。
我们使用这些数字来构建
刻
录小部件的比例。
```
cpp
int
width
=
size
().
width
();
...
...
@@ -361,6 +361,6 @@ int main(int argc, char *argv[]) {
![
The Burning widget
](
img/519811b6a406d2ac1af34740c57a901e.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 Qt5 教程的这一部分中,我们创建了一个自定义的烧录小部件。
\ No newline at end of file
在 Qt5 教程的这一部分中,我们创建了一个自定义的刻录小部件。
\ No newline at end of file
docs/gui/47.md
浏览文件 @
111a7037
...
...
@@ -837,7 +837,7 @@ void Breakout::finishGame(QPainter *painter, QString message) {
```
`finishGame()`
方法在窗口中心绘制一条最终消息。 它是
“游戏失败”或“胜利”
。
`QFontMetrics'`
`width()`
用于计算字符串的宽度。
`finishGame()`
方法在窗口中心绘制一条最终消息。 它是
`"Game Over"`
或
`"Victory"`
。
`QFontMetrics'`
`width()`
用于计算字符串的宽度。
```
cpp
void
Breakout
::
drawObjects
(
QPainter
*
painter
)
{
...
...
docs/gui/6.md
浏览文件 @
111a7037
...
...
@@ -386,7 +386,7 @@ EUROPA
### 比较字符串
`lstrcmpW()`
函数比较两个字符串。 如果字符串相等,则返回 0。 比较是区分大小写的。 这意味着
“杯”和“杯”是两个不同的字符串。
`lstrcmpiW()`
产生不区分大小写的字符串比较。 对于此函数,“杯子”和“杯子”
相等。
`lstrcmpW()`
函数比较两个字符串。 如果字符串相等,则返回 0。 比较是区分大小写的。 这意味着
`Cup`
和
`cup`
是两个不同的字符串。
`lstrcmpiW()`
产生不区分大小写的字符串比较。 对于此函数,
`Cup`
和
`cup`
相等。
```
c
int
WINAPI
lstrcmpW
(
LPCWSTR
lpString1
,
LPCWSTR
lpString2
);
...
...
docs/gui/66.md
浏览文件 @
111a7037
...
...
@@ -903,7 +903,7 @@ private class ClickAction extends AbstractAction {
```
该按钮启动或停止计时器。 该按钮的文本会动态更新。 它可以具有
“开始”,“停止”或“结束”
字符串值。
该按钮启动或停止计时器。 该按钮的文本会动态更新。 它可以具有
`"Start"`
,
`Stop`
或
`"End"`
字符串值。
![
JProgressBar
](
img/0be3526b07142f3901acd930ce4a6fab.jpg
)
...
...
docs/gui/97.md
浏览文件 @
111a7037
...
...
@@ -8,7 +8,7 @@
## 刻录小部件
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
烧
录 ROM)中找到此小部件。
这是我们从头开始创建的小部件的示例。 可以在各种媒体刻录应用(例如 Nero
刻
录 ROM)中找到此小部件。
`widget.h`
...
...
@@ -265,6 +265,6 @@ void Burning::OnScroll(wxScrollEvent& WXUNUSED(event))
![
Burning Widget
](
img/f3858060acfd1570b007711fb52bcc64.jpg
)
图:
烧
录小部件
图:
刻
录小部件
在 wxWidgets 教程的这一部分中,我们创建了一个自定义窗口小部件。
\ No newline at end of file
docs/java/16.md
浏览文件 @
111a7037
...
...
@@ -689,7 +689,7 @@ final int LIMIT = 333;
```
大于此常数的数字在我们的程序中被视为
“大”
。
大于此常数的数字在我们的程序中被视为
`big`
。
```
java
if
(
x
>
LIMIT
)
{
...
...
docs/js/81.md
浏览文件 @
111a7037
...
...
@@ -14,7 +14,7 @@ HTML5 `canvas`元素提供了一个与分辨率有关的位图区域,该区域
## JavaScript 贪食蛇代码示例
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 如果游戏结束,则画布中间会显示
“游戏结束”
消息。
蛇的每个关节的大小为 10 像素。 蛇由光标键控制。 最初,蛇具有三个关节。 如果游戏结束,则画布中间会显示
`"Game Over"`
消息。
`index.html`
...
...
docs/php/169.md
浏览文件 @
111a7037
...
...
@@ -210,7 +210,7 @@ $object2->size = "big";
```
在这里,我们修改克隆对象的成员字段。 我们增加 id,更改颜色对象的红色部分,并将大小更改为
“大”
。
在这里,我们修改克隆对象的成员字段。 我们增加 id,更改颜色对象的红色部分,并将大小更改为
`big`
。
```
php
print_r
(
$object1
);
...
...
@@ -249,7 +249,7 @@ Object Object
```
我们可以看到 ID 不同:23 与 24。大小不同:
“小”与“大”
。 但是,这两个实例的颜色对象的红色部分相同:255。更改克隆对象的成员值不会影响原始对象。 更改引用对象的成员也影响了原始对象。 换句话说,两个对象都引用内存中的同一颜色对象。
我们可以看到 ID 不同:23 与 24。大小不同:
`small`
与
`big`
。 但是,这两个实例的颜色对象的红色部分相同:255。更改克隆对象的成员值不会影响原始对象。 更改引用对象的成员也影响了原始对象。 换句话说,两个对象都引用内存中的同一颜色对象。
要更改此行为,我们接下来将做一个深层复制。
...
...
@@ -468,7 +468,7 @@ define("LIMIT", 333);
```
大于此常量的数字在我们的 PHP 脚本中被视为
“大”
。
大于此常量的数字在我们的 PHP 脚本中被视为
`big`
。
```
php
class
BigValueException
extends
Exception
{
...
...
docs/py/36.md
浏览文件 @
111a7037
...
...
@@ -224,7 +224,7 @@ for row in rows:
```
我们通过
“城市”
表的列名称引用数据。
我们通过
`cities`
表的列名称引用数据。
## PyMySQL 列标题
...
...
docs/ruby/84.md
浏览文件 @
111a7037
...
...
@@ -982,7 +982,7 @@ LIMIT = 333
```
超出此常数的数字在我们的程序中被视为
“大”
。
超出此常数的数字在我们的程序中被视为
`big`
。
```
ruby
if
x
>
LIMIT
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录