学习之路1
1、编辑tab顺序(焦点顺序)
视图中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPhYi7ep-1617633520142)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617623949411.png)]
return a.exec();程序进入消息循环,等待可能的输入进行响应。这里就是main()函数将控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候,exec()函数的值就会返回,在exec()函数中,Qt接收并处理用户和系统的事件并且将他们传递给适当的窗口部件
2、概念解释
1、伙伴编辑模式
QLineEdit *ageLineEdit = new QLineEdit(this);
ageLineEdit->setGeometry(100,100,100,100);
QLabel *ageLabel = new QLabel("&Age",this);
ageLabel->setBuddy(ageLineEdit);
ageLabel->setFocus();
2、信号和槽
1、类型安全;2、松散耦合
一个类若要支持信号和槽,就必须从QObject或其子类继承,信号和槽不支持对模板的使用
效率
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUeMWD4P-1617633520146)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617625180860.png)]
3、字符串类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mzf6wxKR-1617633520148)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617625396773.png)]
操作字符串
QString str1 = "Welcome";
str1=str1+"to you";
QString str2="hello";
str2+="World";
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMs6Lk5X-1617633520150)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617625571712.png)]
屏蔽
QT_CAST_FROM_ASCII
操作
QString::append()
格式化字符串
QString::sprintf();类似
重要操作
QString str;
str=QString("%1 was born in %2.").arg("John").arg(1982);
这种字符串组合方式,可以处理很多的数据类型,类型安全,完全支持Unicode,并且允许改变%n参数的顺序
2、insert()
3、prepend()
4、replace()
使用场景
掐头去尾
QString::trimmed()
QString::simplified():溢出字符串两端的空白字符,使用单个空格字符代替字符串中出现的空白字符
例如
QString str=" Welcome \t to \n you! ";
str=str.simplified();
查询字符串
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bzQf7HWL-1617633520151)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617626255862.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OoQdLLGD-1617633520152)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617626323988.png)]
3、字符串转换
QString::toInt();
QByteArray
QByteArray::toAscii();
QByteArray::toLatin1();
QByteArray::toLocal8Bit();系统本地编码
NULL字符串和空(empty)字符串的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XR8EoMfj-1617633520153)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617626563155.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BbQ8bYbE-1617633520154)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617626598709.png)]
4、容器类
声明:QObject及其子类是不能够存储在容器中的,
代替方案:存指针
QList
append()
prepend()
insert()
QLinkedList
QVector
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bUh5rXgz-1617633520154)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617626969534.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hHfd6yUY-1617633520155)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617627052538.png)]
在使用Qt编写应用程序时,如果是控制台应用程序,则建议初始化一个QCoreApplication对象;如果是GUI图形用户界面程序,则建议初始化QApplication对象。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2xLzM1qf-1617633520156)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617627539957.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jmziZRFD-1617633520156)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617627597252.png)]
5、QVariant类
QVariant类似于C++的联合(union)数据类型,它不仅能偶保存很多Qt类型的值,
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLwvLGGo-1617633520157)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617628096671.png)]
6、常用算法
1、qAbs()绝对值
2、qMax()
3、qRound():函数返回一个与浮点数最接近的整数值
4、qSwap()交换
5、
正则表达式
正则表达式由表达式(expressions)、量词(quantifiers)和断言(assertions)组成
例子
[AEIOU]
[^AEIOU]
[a-z]:表示匹配所有的小写英文字母
2、两次说明表达式出现的次数
x[1,2]表示x至少由一个,至多两个
计算机语言案例,标识符通常要求以字母或下划线开头,后面可以是字母、数字和下划线
"[A-Za-z_]+[A-Za-z_0-9]*"
其中+表示至少出现依次,可以出现多次
*号表示可以出现零次或多次
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XXsjbQxX-1617633520158)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617628608088.png)]
断言:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oLNGZjRW-1617633520158)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617628663197.png)]
例子,若要只有using后面是namespace时才匹配using则可以使用
"using(?=E\s+namespace)
此处\s表示匹配一个空白字符"
7、控件
1、按钮组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4oFAQyh-1617633520159)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617628884744.png)]
Command Link Button:命令链接按钮
Button Box:按钮盒
2、输入控件组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EL8wTXs2-1617633520160)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617629011975.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x46tdpzZ-1617633520161)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617629040927.png)]
QLabel *datalabel = new QLabel();
QDateTime *datatime = new QDateTime(QDateTime::currentDateTime());
datalabel->setText(datatime->date().toString());
datalabel->setParent(this);
QTimer
QTimer *time_clock = new QTimer(this);
static int count = 0;
connect(time_clock,&QTimer::timeout,this,[=](){
datalabel->setText(QString::number(count+=1,10));
});
//开启定时器,并设定始终周期
time_clock->start(1000);
3、显示控件组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WPEj5RIM-1617633520162)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617629695618.png)]
QTextBrowser提供了几种比较有用的槽
backward()
forward()
home()
可以通过链接这个槽来达到人们常说的翻页效果
4、空间间隔组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uIgmuj5a-1617633520163)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617629904639.png)]
5、布局管理组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BklRUrRb-1617633520163)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617629965995.png)]
6、容器组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SU6ZBztc-1617633520164)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617630008285.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJVu63wj-1617633520165)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617630083430.png)]
7、项目视图组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BL9Acw4e-1617633520165)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617630150791.png)]
mvc
简单实例
QSqlTableModel *model = new QSqlTableModel(4,2);
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0);//不显示id
model->setHeaderData(0,Qt::Horizontal,QObject::tr("Name"));
model->setHeaderData(1,Qt::Horizontal,QObject::tr("Salary"));
QTableView *view = new QTableView();
view->setModel(model);
view->show();
8、项目控件组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VgJU1tmh-1617633520166)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617630859471.png)]
9、限制输入字元的范围
QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
ui->lineEdit->setValidator(new QRegExpValidator(regExp,this));
要求只允许第一个字元输入大小写英文字母,后面接一位非0的数字,再接0~2位可为0的数字
10、parent-child
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHik3oU2-1617633520166)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617631767854.png)]
8、隐式共享
写诗复制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEOKgnR3-1617633520167)(C:\Users\11066\AppData\Roaming\Typora\typora-user-images\1617632004799.png)]
9、WindowFlag枚举类型
Qt::Widget:构造函数默认值,如果新的窗口部件没有父窗口部件,则它是一个独立的窗口,否则就是一个子窗口部件
Qt::Window:无论是否有父窗口部件,新窗口都是一个窗口,通常有一个窗口边框和一个标题栏
Qt::Dialog:新窗口是一个对话框,
Qt::Sheet:新窗口是一个Macintosh表单
Qt::Drawer:新窗口部件是一个Macintosh抽屉
Qt::Popup:新窗口是一个弹出式顶层窗口
Qt::Tool:新窗口是部件是一个工具窗口,通常是一个用于显示工具按钮的小窗口,如果一个工具窗口有父窗口部件,则它将显示在父窗口部件的上面,否则,将相当于使用了Qt::WindowStaysOnTopHint提示
Qt::ToolTip:新窗口部件是一个欢迎窗口(splash screen),它是QSplashScreen构造函数的默认值
Qt::Desktop:新窗口部件是桌面,它是QDesktopWidget构造函数的默认值
Qt::SubWindow:新窗口部件是一个子窗口,而无论该窗口部件是否有父窗口部件,此外,Qt::还定义了一些控制窗口外观的窗口提示(仅对顶层窗口有效)
Qt::MSWindowsFiredSizeDialogHint:为Windows系统上的窗口装饰一个窄的对话边框,通常这个提示用于固定大小的对话框。
Qt::MSWindowsOwnDC:为Windows系统上的窗口添加自身的显示上下文(display context)
Qt::X11BypassWindowManagerHint:完全忽视窗口管理器,它的作用是产生一个根本不被管理无窗口边框的窗口(此事,用户无法使用键盘进行输入,除非手动调用QWidget::activateWindow()函数)
Qt::FramelessWindowHint:产生一个无窗口边框的窗口,此时用户无法移动该窗口和改变它的大小
Qt::CustomzeWindowHint:光比默认的窗口标题提示。
Qt::WindowTitleHint:为窗口装饰一个标题栏。
Qt::WindowSystemMenuHints:为窗口添加一个窗口系统菜单,并尽可能的添加一个关闭按钮。
Qt::WindowMinimizeButtonHint:为窗口添加一个最小化按钮。
Qt::WindowMaximizeButtonHint:为窗口添加一个最大化按钮
Qt::WindowMinMaxButtonsHint:
Qt::WindowContextHelpButtonHint:为窗口添加一个上下文帮助按钮
Qt::WindowStaysOnTopHint:告知窗口系统,该窗口应该停留在所有其他窗口的上面。
Hint:光比默认的窗口标题提示。
Qt::WindowTitleHint:为窗口装饰一个标题栏。
Qt::WindowSystemMenuHints:为窗口添加一个窗口系统菜单,并尽可能的添加一个关闭按钮。
Qt::WindowMinimizeButtonHint:为窗口添加一个最小化按钮。
Qt::WindowMaximizeButtonHint:为窗口添加一个最大化按钮
Qt::WindowMinMaxButtonsHint:
Qt::WindowContextHelpButtonHint:为窗口添加一个上下文帮助按钮
Qt::WindowStaysOnTopHint:告知窗口系统,该窗口应该停留在所有其他窗口的上面。