信号槽、父子关系、隐式共享

1. Qt基础

- connect(…):连接了"OK"按钮至QDialog的accept槽函数,以及"Cancel"按钮至QDialog的reject槽函数。根据结果判断按下的是"OK"按钮还是"Cancel"按钮。

- parent-child机制:当建立一个物件时,若有parent,则parent将此物件加入其children list。消除parent时,会根据children list 消除这些child。widget的parent还决定了child widget的显示范围。

- 实现槽函数on_lineEdit_textChanged():

```cpp

void Dialog::on_lineEdit_textChanged() {

    ui->okButton->setEnabled(ui->lineEdit->hasAcceptableInput());

}

```

- 运行工程:当在lineEdit中输入A12后,"OK"按钮将自动变为可用状态。

2. 字符串类QString:概念解析

- 隐式共享技术:当两个对象共享数据时,根据数据是否改变进行深拷贝或浅拷贝。

- QString类采用隐式共享技术,结合深拷贝和浅拷贝。

- 通过例子说明隐式共享如何工作:

```cpp

QString str1 = "data";

QString str2 = str1;

str2[3] = 'e';

str2[0] = 'f';

str1 = str2;

```

3. Qt中支持隐式共享的类:

- 所有的容器类。

- QByteArray、QBrush、QPen、QPalette、QBitmap、QImage、QPixmap、QCursor、QDir、QFont和QVariant等。

4. QString内存分配策略:

- 每次分配4个字符空间,直到大小为20。

- 在20~4084之间,内存块大小以2倍速增长。

- 从4084开始,每次以2048个字符大小的步长增长。

你可能感兴趣的:(qt)