Qt—商场广告导航结合眼球跟踪技术等交互技术

QMainWindow和QWidget的区别

Qt 中所有可视化的元素都称为控件

QWidget下为 #include “ui_widget.h”
QMainWindow下为 #include “ui_mainwindow.h”

QMainWindow中在setUi时自动为用户创建了一个菜单栏、工具栏、中心窗口和状态栏。而QWidget是没有这几点的。

QWidget运行后就只有一个“页面”,而QMainWindow运行后生成了一个“窗口”。

setMenuBar、addToolBar、setCentralWidget、setStatusBar几种行为只有QMainWindow类具有。在继承自QWidget类的用户类中无法创建菜单栏等几种行为。

QMainWindow和QDialog的区别

  • QMainWindow 类生成的窗口自带菜单栏、工具栏和状态栏,中央区域还可以添加多个控件,常用来作为应用程序的主窗口;
  • QDialog 类生成的窗口非常简单,没有菜单栏、工具栏和状态栏,但可以添加多个控件,常用来制作对话框。

注意:制作应用程序的主窗口可以用 QMainWindow 或者 QWidget;制作一个提示信息的对话框就用 QDialog 或 QWidget;如果暂时无法决定,后续可能作为窗口,也可能作为控件,就选择 QWidget。

信号和槽

信号和槽机制底层是通过函数间的相互调用实现的。

每个信号都可以用函数来表示,称为信号函数;每个槽也可以用函数表示,称为槽函数。例如“按钮被按下”这个信号可以用 clicked() 函数表示,“窗口关闭”这个槽可以用 close() 函数表示

槽函数:public slots、protected slots 或者 private slots 修饰。信号函数用  signals 关键字修饰

信号函数只需要声明,而槽函数需要定义(实现)

将某个信号函数和某个槽函数关联起来,需要借助 QObject 类提供的 connect() 函数。

connect()函数:

QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)

  • sender:指定信号的发送者;
  • signal:指定信号函数,信号函数必须用 SIGNAL() 宏括起来;
  • reveiver:指定信号的接收者;
  • method:指定接收信号的槽函数,槽函数必须用 SLOT() 宏括起来;
  • type 用于指定关联方式,默认的关联方式为 Qt::AutoConnection,通常不需要手动设定。
  • connect(&But, &QPushButton::clicked, &widget, &QWidget::close);  新版用法

 QLabel 文本框

 QPushButton(普通按钮)、QRadioButton(单选按钮)、QToolButton(工具栏按钮)

QLineEdit单行输入框(输入文本的格式,例如用户输入出生日期时,必须按照“yy-mm-dd”的格式输入;)

QTableWidget 表格控件

QTreeWidget 树形控件,树形结构展示数据(或者文件)之间的包含关系。

QMessageBox消息框

5 种布局管理器,每种布局管理器对应一个类,分别是 QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)和 QStackedLayout(分组布局)

.pro->项目管理文件或者工程管理文件

QT += core gui中,Qt是配置项,coregui是该配置项的值,中间用+=符号连接

自定义信号函数:

  • 定义在某个类中,该类直接或间接继承自 QObject 类;
  • 用 signals 关键字修饰;
  • 函数只需要声明,不需要定义(实现);
  • 函数的返回值类型为 void,参数的类型和个数不限。

自定义槽函数:必须手动定义(实现)

  • 槽函数的返回值必须和信号函数相同,由于信号函数的返回值一定是 void,所以槽函数的返回值也必须为 void;
  • 对于带参的信号函数,槽函数可以选择接收所有参数,则参数的类型、顺序、个数都必须与信号函数相同;也可以选择接收前几个参数,这些参数的类型、顺序都必须与信号函数相同;还可以选择不接受任何参数。
  • 槽函数的参数个数只能比信号函数少,不能比信号函数多;
  • 槽函数的参数不能有默认值。

Lambda表达式

[函数对象参数](操作符重载函数参数)mutable或exception ->返回值{函数体}

例如:[=]()mutable exception - >int

  • 空,没有任何函数对象参数
  • =,值传递方式(作用范围:所有可见的局部变量以及所在类的this)
  • &,引用传递方式(作用范围:所有可见的局部变量以及所在类的this)
  • this,函数体内可以可以使用Lambda所在类中的成员变量
  • a,把a按值进行传递(默认为const不可修改,可添加mutable修饰符修改)
  • &b,把b按引用进行传递
  • &,a,b,除a和b进行值传递,其他参数按引用进行传递

Qt笔记总结 - 知乎 (zhihu.com)

QNetworkAccessManager

处理返回来的数据:

reply1 = manager->get(QNetworkRequest(url_1));
reply2 = manager->get(QNetworkRequest(url_2));
connect(reply1,SIGNAL(finished()),this,SLOT(httpFinished_1()));
connect(reply2,SIGNAL(finished()),this,SLOT(httpFinished_2()));

post数据:
connect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(after_post(QNetworkReply*)));

disconnect(manager,SIGNAL(finished(QNetworkReply*)),this,SLOT(after_post(QNetworkReply*)));

基于Qt应用开发的商场广告导航结合眼球跟踪技术等交互技术,以下是Qt应用商场导航部分页面:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值