当前位置: 首页 > news >正文

网站备案 现场提交响应式网站开发设计

网站备案 现场提交,响应式网站开发设计,建筑人才网证书查询,企业网络营销实施方案目录 什么是QT 特点 QT程序 main函数 QT按钮 纯代码模式 图形化模式 对象树模型 信号和槽 连接与断开 自动连接 断开连接 信号的发射 lambda表达式 基本语法 捕获列表 Lambda表达式用于信号与槽的连接 例如 什么是QT Qt是一个跨平台的C图形用户界面应用…

目录

什么是QT

特点 

QT程序 

main函数

QT按钮

纯代码模式

图形化模式 

对象树模型

信号和槽 

连接与断开

自动连接

 断开连接

信号的发射 

lambda表达式 

基本语法 

捕获列表 

Lambda表达式用于信号与槽的连接

 例如


 

什么是QT

Qt是一个跨平台的C++图形用户界面应用程序框架

在QT中,一个函数对应着一个相对应的头文件,文件和函数名相同;

当然了,有的头文件也会隐式包含了其它头文件,所以有些函数不需要特意去包含相对应的头文件 

特点 

  • 跨平台,几乎支持所有的平台
  • 接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
  • 一定程度上简化了内存回收机制
  • 开发效率高,能够快速的构建应用程序。
  • 有很好的社区氛围,市场份额在缓慢上升。
  • 可以进行嵌入式开发。 

QT程序 

main函数

QT按钮

QT控件的创建,一般有两种方式:

  • 通过图形化的方式,在界面上创建出一个控件,显示设置文本。
  • 通过纯代码的方式,通过编写代码,在界面上创建控件,显示设置文本。

纯代码模式

通过代码创建按钮,指定挂到对象树上,方便日后的资源释放

通过按钮对象来调用不同的方法函数来实现不同功能

 

        如果只是创建出对象,是无法显示到窗口中的,所以我们需要依赖一个父窗口,也就是指定一个父亲。(按钮也是继承于QWidget,也属于窗口)。 

图形化模式 

用图形化模式创建一个按钮,只需要在ui文件内,选择需要的控件拖拽到窗口区即可。

当然,后续还可以添加qrc文件来达到更好的效果。

 

对象树模型

 在Qt中,当一个对象被创建时,可以指定其父对象。

QObject是Qt里边绝大部分类的根类

QObject对象之间是以对象树的形式组织起来的。

  •  当两个QObject(或子类)的对象建立了父子关系的时候。子对象就会加入到父对象的一个成员变量叫children(孩子)的list(列表)中。
  • 当一个父对象被销毁时,它的所有子对象也会被自动销毁,从而释放它们占用的资源。

        对象树确保的是先释放⼦节点的内存, 后释放⽗节点的内存. ⽽析构函数的调⽤顺序则不⼀定遵守上述要求. 因此看到⼦节点的析构执⾏顺序反⽽在⽗节点析构顺序 之后.

注: 调⽤析构函数和释放内存并⾮是同⼀件事。

信号和槽 

信号和槽是实现对象间通信的一种机制;

对象在发生信号后,另一个对象可以连接信号到自己的槽函数上,响应。

信号(signals):

  • 信号是Qt中的一种特殊函数,它在特定事件发生时被发射(emit)。
  • 信号可以携带参数,这些参数在信号发射时传递给连接的槽函数。

槽(Slots):

  • 槽是Qt中的一种特殊成员函数,可以连接到信号上。
  • 槽函数可以有参数,也可以没有参数。如果有参数,这些参数必须与连接的信号的参数匹配。

连接与断开

自动连接

信号和槽是自动连接的;

两种方式连接:

  • 在Qt Designer中,可以通过拖动信号到槽来自动创建连接。
  • 也可以在代码中使用 QObject::connect 函数来手动创建连接。

 

 断开连接

使用 QObject::disconnect 函数来断开信号和槽之间的连接。
断开连接可以防止槽函数在不需要的时候被调用。

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//信号源是 图形化按钮         关闭后               谁来处理       怎么处理connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handclicked);
}
//手动添加 处理图形化pushbutton1槽函数
void Widget::handclicked()
{this->setWindowTitle("标题修改成标题1");qDebug()<<"handclicked1";
}void Widget::handclicked2()
{//切换原来槽信号后,this->setWindowTitle("标题修改为2");qDebug()<<"handclicked2";
}void Widget::on_pushButton_2_clicked()
{//1.先断开pushButton原来的 信号槽//如果没有 disconnect, 就会构成 一个信号绑定了两个槽函数. 触发信号的时候, 两个槽函数都会执行.disconnect(ui->pushButton,&QPushButton::clicked,this,&Widget::handclicked);//2.重新绑定信号槽connect(ui->pushButton,&QPushButton::clicked,this,&Widget::handclicked2);
}

信号的发射 

信号的发射是通过调用 emit 关键字实现的。

// myclass.hsignals: // 信号声明部分void mySignal(int value); // 自定义信号,参数为int类型
// myclass.cpp
#include "myclass.h"void MyClass::someMethod()
{int value = 10;emit mySignal(value); // 发射信号,并传递一个int值
}
#include <QApplication>
#include "myclass.h"class Receiver : public QObject
{Q_OBJECTpublic slots:void receiveValue(int value) // 对应的槽函数{qDebug() << "Received value:" << value;}
};

lambda表达式 

  C++11中的Lambda表达式用于定义匿名的函数对象,以简化编程工作。

基本语法 

[捕获列表](参数列表) -> 返回类型 { 函数体 }

[capture-list] (parameters) -> return-type { body; }
  • capture-list(捕获列表): 定义了lambda函数体中可以访问的外部变量。可以是空的,或者使用[&]捕获所有外部变量的引用,[=]捕获所有外部变量的值,或者明确指定个别变量,如[x, &y]表示按值捕获x,按引用捕获y。
  • parameters(参数列表): 类似于常规函数的参数列表,可以为空。
  • -> return-type(返回类型): 可选,明确指定lambda函数的返回类型。如果不写,则编译器会根据函数体推导返回类型。
  • body(函数体): 包含了lambda表达式执行的具体代码。 

捕获列表 

 [=]:以传值方式捕获所有局部变量。
[&]:以引用方式捕获所有局部变量。
[变量]:捕获特定变量,可以使用=或&指定捕获方式。

Lambda表达式用于信号与槽的连接

QObject::connect(sender, &SenderClass::signalName, [=]() {// Lambda表达式内的代码
});
 例如
#include "widget.h"
#include "ui_widget.h"#include<QPushButton>
#include<QDebug>
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);//lanbda的使用QPushButton* button = new QPushButton(this);button->setText("按钮");button->move(200,200);//链接connect(button,&QPushButton::clicked,this,[=](){qDebug()<<"lambda被执行";this->setWindowTitle("我是窗口标题");this->move(100,100);});
}

 

http://www.yayakq.cn/news/719209/

相关文章:

  • 图片 网站开发支付宝免签约wordpress
  • 企业网站主题用dw做的企业网站
  • 菠菜网站建设条件买域名不建网站
  • 出口电商网站建设程序网站建设技术公司
  • 网站开发行业新闻wordpress书籍
  • 环保网站建设维护情况报告wordpress收费会员插件
  • 网站建设asp营销手机都有什么功能啊
  • wordpress 知言搜素引擎排名优化技术
  • 江苏省建设厅官方网站资质查询网站怎么做白色字
  • 制作网站多少钱展台
  • 苏州商城网站建设电话硬件开发入门
  • 建站服务论坛创建网站的过程
  • 牡丹园网站建设跨境电商网站建设开发
  • 做网站准备什么问题加强网站基础建设项目
  • 好的h5制作网站模板下载重庆网络推广引流公司
  • 网站建设行业如何标签云wordpress
  • 网站建设成本费用东莞公司网站怎么做
  • 怎么做淘客网站推广软文怎么优化网站
  • 我的网站设计联盟付费网站模板
  • 云阳一平米网站建设建设部网站建造师公示
  • 做网站ps注意事项wordpress电商小程序
  • 做网站怎样赚钱互联网建站公司
  • 浙江省网站备案注销申请表公司网站可以自己建立吗
  • 商城型网站建设wordpress 点赞插件
  • 注册网站建设公司wordpress修改后台登陆账号密码
  • 网站建设尺寸规范怎么把自己做的网站发到网上通过网址来查看
  • 手机网站制作方案高端交易所开发
  • 临沂网站制作定制wordpress ios使用
  • .net网站开发工程师wordpress 文本小工具添加
  • 怎么注册一个属于自己的网站电子商务网站建设 教案