Qt 地址薄 (一) 界面设计

 欲言又止,我动铁耳机里放的是《滚滚红尘》。

 
实现一个简单的地点薄,功效包括:地址的充裕、浏览、编辑、查找、输出文件等。

您像某位故人。这位故人有平整的眉头,尖锐的笔锋和黑夜里疯狂的沉默。他才是实在的文艺青年,梦想着仗剑去国,辞亲远游。说过众多道理,后来都逐一在自我的生活里被确证,是良心话。他的成长岁月像树一样,哪些年份水分足,哪面向阳,能结下树疤的地方,平常特别拧巴。有幸,我成为她前女友。

1  界面和要素

  整个地址薄界面,为 AddressBook 类。其中的 Name、Address
以及多个编辑栏,与 AddressBook 是 “包含” 关系 (has-a),故可将它们表明为 AddressBook
的成员数量。

    图片 1

1) QLabel 

    Name 和 Address 只 呈现文本,可用 QLabel 实现,Qt 中其讲述为 ”QLabel is used for displaying text or an image. No
user interaction functionality is provided“

2) QLineEdit 

    单行编辑框,可用 QLineEdit 实现,其讲述为 ”The QLineEdit widget is a one-line text editor“

3) QTextEdit

    多行编辑框,可用 QTextEdit 实现,其讲述为 ”The QTextEdit class provides a widget that is
used to edit and display both plain and
rich text“

 

宣誓过,除非他死,不评说,不写。

2  子类化 (Subclassing)

  地址薄 属于 自定义窗口部件 (custom widget),在 Qt
中并不曾对应的标准类。常用艺术是:子类化 Qt 中的标准类。

  此外,当一个窗口部件的效率,兼有五个规范窗口部件的职能时,也常用该办法。子类化的长处如下:

  1)  只需重写基类中的虚函数,来促成所需要的效果,显示了 “面向对象” 的
多态性

  2)  将 UI 界面封装在一个类中,隐藏了贯彻的底细,呈现了 “面向对象” 的
封装性

  3)  实现的子类可被多少个程序或库调用,呈现了规划的 可复用 原则
(reusable)

 
由此,可以通过子类化 QWidget 来兑现地方薄类 AddressBook

冯唐的文字有优越感,文笔飘逸,一摸就硬,开卷就能高潮。熟读原典,8年艺术学,美利坚合众国见了场景,出来做战略咨询,拍案惊奇,必须自信。

2.1  Q_OBJECT 宏

  #8 的 Q_OBJECT
宏时,可概括明了为,Qt 中允许此类应用 tr() 和 connect() 函数。

  #15 和 #16 处,表明了两个村办成员数量,QLineEdit 型 和 QTextEdit
型指针,分别表示地址薄中的 Name 和 Address 右边的编辑框。

  那么,在析构函数 ~AddressBook()中,是不是需要 delete 这多少个指针呢?

 1 #include <QWidget>  // addressbook.h 
 2 
 3 #include <QLineEdit>
 4 #include <QTextEdit>
 5 
 6 class AddressBook : public QWidget
 7 {
 8     Q_OBJECT
 9 
10 public:
11     AddressBook(QWidget *parent = nullptr);
12     ~AddressBook();
13 
14 private:
15     QLineEdit  *name_line_;
16     QTextEdit  *addr_text_;
17 };

可以从他文字里找到各样我喜爱的男生类型。十几岁帅气的小混混,牛逼的文艺理科生,风趣的经纪人,摸了古玉,仍能摸姑娘,酒杯里看得见佛。他一向不在乎你能在她书里找到什么样,你即是众生。

  2.2  所有权 (ownership)

  在 AddressBook 的构造函数中,明明 new 了 QLineEdit 和 QTextEdit
型指针,然而在析构函数中,并不曾 delete
相应的指针,难道没有内存泄露么?这要从 Qt 的内存管理说起。

  #11 构造函数声称中,它有一个 QWidget* 类型的参数
parent,该参数会传给其基类的结构函数 (QWidget)。这样,当实例化一个
AddressBook 对象时,假使为其指定了一个父类,则该父类便享有了这么些子类的
”所有权“(ownership)。

 
当举办资源管理时,只需要销毁这么些父类,则它所享有的有所子类,都会被自动删除,这是
Qt 中的一个重中之重概念 — “所有权”。

  Qt 中的描述为:“The constructor of AddressBook accepts a QWidget parameter.  By convention, we pass this
parameter to the base class’s
constructor.  This concept of ownership, where a parent can have
one or more children, is useful for grouping widgets.  For example,
if you delete a parent, all of its children
will be deleted as well.”

  具体 AddressBook 是哪些获取 name_line_ 和 addr_text_ 所有权的,会在 “
布局管理中
” 详细阐释。

 1 #include <QtWidgets/QLabel>
 2 #include <QtWidgets/QLineEdit>
 3 #include <QtWidgets/QTextEdit>
 4 #include <QtWidgets/QGridLayout>
 5 
 6 #include "addressbook.h"
 7 
 8 AddressBook::AddressBook(QWidget *parent)
 9     : QWidget(parent)
10 {
11     QLabel *name_label = new QLabel("Name:");
12     name_line = new QLineEdit;
13     QLabel *addr_label = new QLabel("Address:");
14     addr_text = new QTextEdit;
15 
16     ... ... ...
17 
22     setWindowTitle("Address Book");
23 }
24 
25 AddressBook::~AddressBook()
26 {
27 }

 

柴静是消息记者。她不是法拉奇,没有尖锐的高鼻梁。她早期的夜间节目温情如水,滋润陌生人的孤寂。太矫情,太高傲,听着就像高中央理指导老师。

3  布局管理

  Qt 中有两种布局管理类,可以拍卖窗口部件的职位布置,分别是
QHBoxLayout、QVBoxLayout 和 QGridLayout

  其中 QGridLayout
可以因而点名窗口部件的行数和列数,来支配各类窗口部件的布局,如下所示:

    图片 2

  按照地点的行数和列号,在 AddressBook 的构造函数中,添加如下代码:

16     QGridLayout *layout = new QGridLayout;
17 
18     layout->addWidget(name_label, 0, 0);
19     layout->addWidget(name_line_, 0, 1);
20     layout->addWidget(addr_label, 1, 0, Qt::AlignTop);
21     layout->addWidget(addr_text_, 1, 1);
21     setLayout(layout);

   Qt 中 setLayout() 函数的原型为:

void QWidget::setLayout(QLayout *layout);

  具体讲述为 “Sets the layout manager for this widget to layout.
The QWidget
will take ownership of layout.”

  通过 #21,可以将 AddressBook
的布局管理器设置为 layout, 同时
AddressBook 获得了 layout
的拥有权。

 

《看见》在文笔上算中等,可贵的是一股认真的劲,追着问题不放,不论好歹牵出来。在公民昏聩的时期,特别强悍。想想我自己受过的教育,她可真够执着,敢捏碎了友好指着过去说:这就叫又愚又钝,化了十年才化出点干净的,有意思的东西。

参考资料:

   Qt 5.9 | Qt Widgets | Part 1 –
Designning the User Interface

 

从王小波起,中国女小说家仍旧下了功夫,王朔能自嘲不是好货,《致孙女书》总括下来就是永不依附任何一个爱人,煲汤比写诗重要。刘震云写生活杂事里遍地人性。民国才女杨绛告诉我,选了路自己逐步走,跟别人没关系。冯唐也发起走窄门,人多的地方不要去。到柴静这里,就是少说话,多干活,抹去我,所以显示他很女神。

说冯唐没有救世济民的思索,我不襄助。干音信跟搞经济改进,不要有职业歧视可不可以?在其位,端好事情,是敬业。做环保公益很舍己,整天哭天抢地,集团老董再怎么剥削你,但让我们都有饭吃。人类分工好比,地震的时候,无法全员都哄上去救灾,还得有人管理疏导。

文豪是给万物取名。你说不出来的感觉,惊叹不尽的高大,形容不了的美,搜肠刮肚找不到的台词,他给您写出来。这上边,冯唐真乃才子也。

激情上的事,除了当事人,任何旁人都无权俯视。风流也好,钟一也好,只要你情我愿,无关道德。

她们都是自家心爱的作者。你是自身喜爱的张美丽的女生,我是你爱戴的左爷。

您领悟自己在说怎么。

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注