专业建站工作室拓客平台有哪些

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

专业建站工作室,拓客平台有哪些,wordpress怎么修改网站标题,如何搭建海外网络文章目录 1 信号和槽1.1 信号和槽的概念1.2 信号和槽的应用1.3 信号和槽的连接1.4 信号和槽的特性1.5 生活中的类似例子1.6 信号和槽的优势 2 信号和槽的使用2.1 控件的信号和槽2.2 自定义信号和槽2.3 信号和槽的参数传递 3 定时器3.1 QTimer类的基本使用3.2 QTimer类的成员函数… 文章目录 1 信号和槽1.1 信号和槽的概念1.2 信号和槽的应用1.3 信号和槽的连接1.4 信号和槽的特性1.5 生活中的类似例子1.6 信号和槽的优势 2 信号和槽的使用2.1 控件的信号和槽2.2 自定义信号和槽2.3 信号和槽的参数传递 3 定时器3.1 QTimer类的基本使用3.2 QTimer类的成员函数 4 事件和事件过滤器4.1 概念4.2 事件过滤器的使用 5 事件循环6 子窗口的使用和窗口间的数据传递6.1 子窗口的使用6.2 窗口间的数据传递 7 INI配置文件7.1 介绍7.2 使用Qt读写INI文件 1 信号和槽 1.1 信号和槽的概念 在程序中当某个事件如按钮被单击发生时会在程序内部广播一段特定的消息这个消息就是信号。槽Slot是响应信号的函数也称为“槽函数”。槽函数是一个C函数可以定义在类的任何部分可以有参数可以被调用。 当有信号发射时与之相连接的槽函数会自动执行。信号和槽可以根据需要随时连接和断开。 1.2 信号和槽的应用 在Qt编程中信号和槽的应用非常广泛可以用于各种场合例如 处理用户输入事件如按钮单击事件、鼠标移动事件等处理系统事件如窗口关闭事件、定时器事件等在多线程编程中用于线程之间的通信在自定义控件中用于实现控件之间的交互等。 1.3 信号和槽的连接 在Qt中信号和槽的连接非常简单可以使用connect()函数进行连接。connect()函数的第一个参数是发射信号的对象指针第二个参数是信号的名称第三个参数是接收信号的对象指针第四个参数是槽函数的名称。例如(Qt4写法) connect(button, SIGNAL(clicked()), this, SLOT(onButtonClicked()));1.4 信号和槽的特性 信号和槽具有以下特性 信号可以连接到多个槽函数一个槽函数也可以连接到多个信号信号和槽可以是跨线程的可以在不同线程中进行连接和断开信号和槽可以带参数参数的类型可以是任意Qt支持的类型包括自定义类型信号和槽的连接可以在运行时动态创建和断开。 1.5 生活中的类似例子 信号和槽机制在生活中也有很多类似的例子例如 电视遥控器和电视之间的信号和槽遥控器上的按钮相当于信号电视上的操作相当于槽汽车上的各种控制按钮和汽车控制系统之间的手机上的触摸屏和手机应用程序之间的信号和槽触摸屏上的操作相当于信号应用程序中的响应函数相当于槽。 这些例子中信号和槽的作用是相似的都是用来实现不同组件之间的交互和通信。 1.6 信号和槽的优势 使用信号和槽机制有以下优势 降低组件之间的耦合度组件之间通过信号和槽进行通信不需要了解对方的实现细节从而降低了组件之间的耦合度。代码可读性好使用信号和槽机制可以使代码结构清晰易于阅读和维护。代码重用性高一个信号可以连接多个槽函数从而提高了代码的重用性。程序执行效率高由于信号和槽是动态连接的只有在需要时才会执行因此程序执行效率相对较高。 2 信号和槽的使用 2.1 控件的信号和槽 在Qt中控件的信号和槽是应用最为广泛的一种信号和槽。 信号由信号名和一对括号构成如clicked()类似于函数名。信号可以带有参数如clicked(bool)。槽函数是响应信号的函数可以定义在类的任何部分可以有参数可以被调用。槽函数在响应信号的时候可以接收信号的参数并进行处理。Qt会自动为clicked()信号生成对应的槽函数命名规则为on_控件名_信号名(参数列表可为空)。开发者在手工编写函数时也可以按照以上命名规则命名系统会将手工编写的函数认作控件的槽函数。 2.2 自定义信号和槽 除了控件信号和槽外我们还可以自定义信号和槽。 自定义信号和槽的声明方式与普通成员函数相同。信号必须在signals关键字下声明槽必须在slots关键字下声明。信号可以有参数也可以没有参数但是不能有函数体因为信号只是一个声明没有具体的实现。槽函数的声明与普通成员函数相同可以有参数有函数体但需要在函数体前添加slots关键字。 2.3 信号和槽的参数传递 信号和槽之间可以进行参数传递可以将信号参数传递给槽函数也可以将槽函数的返回值作为信号的参数传递出去。参数传递的方式有以下两种 直接传递参数通过信号与槽函数的参数列表进行绑定将信号参数传递给槽函数。 3 定时器 定时器是一种在编程中非常常见的工具可以用于定时执行某些操作。在Qt中使用QTimer类来实现定时器功能。 3.1 QTimer类的基本使用 与日常生活中使用的闹钟类似定时器也需要先设置时间然后启动定时器在定时时间到达时发出信号执行槽函数。QTimer类的使用主要包括两个步骤定时和启动。在使用QTimer类之前需要引用头文件 #include QTimer3.2 QTimer类的成员函数 QTimer类的常用成员函数包括 start(std::chrono::milliseconds msec)启动定时器参数为定时时间单位为毫秒。stop()停止定时器。setTimerType(Qt::TimerType type)设置定时器精度。 Qt提供了三种定时策略分别为 精确的定时Qt::PreciseTimer毫秒级精度 粗略的定时Qt::CoarseTimer5%左右的定时误差——默认 非常粗略的定时Qt::VeryCoarseTimer精度在1s左右singleShot(int msec, const QObject *receiver, const char *member)单次定时。 定时时间由参数msec指定单位为毫秒。定时结束后会自动调用receiver的槽函数member。 QTimer类只有一个信号timeout()当定时结束后会自动发射该信号。可以将timeout()信号与槽函数连接以实现在定时器结束后执行特定的操作。 4 事件和事件过滤器 4.1 概念 事件是程序内部或外部产生的事情或某种动作的通称。Qt中常见事件包括鼠标事件、键盘事件、定时事件、上下文菜单事件、关闭事件、拖放事件、绘制事件等。在Qt中事件的类型在QEvent::Type中有着详细的定义。 系统可以捕获事件然后根据事件的类型和来源进行处理。有时开发者会希望拦截某个事件并进行处理从而实现自定义的功能。 4.2 事件过滤器的使用 事件过滤器可以对控件的事件进行过滤和拦截从而改变处理事件的方式。为了使用事件过滤器需要进行以下步骤 1在目标对象上调用installEventFilter()函数注册事件过滤器。也可以使用removeEventFilter()函数删除已有的事件过滤器。 2向类中添加eventFilter()函数并完成事件处理代码。 3确定事件的后续去向即是否需要将事件传递给系统处理。如果在eventFilter()函数中返回false那么事件将发送给系统。如果返回了true那么该事件会被丢弃后续的事件过滤器和系统都不能检测到这一事件。 5 事件循环 事件循环是一种常见的等待机制是一个无限循环在运行事件循环后程序会进入阻塞状态直到收到退出信号后才能退出循环并执行后续的代码。Qt提供了QEventLoop类来进入和退出事件循环。 在使用事件循环时需要创建QEventLoop实例并连接事件循环的quit()函数和退出信号然后调用exec()启动循环。事件循环的退出可以通过收到退出信号或者主动调用exit()函数来实现。 当需要在一定时间后强制退出事件循环时可以使用QTimer::singleShot()函数来触发退出事件循环。这样在一定时间后就会自动退出事件循环从而继续执行后续代码。 6 子窗口的使用和窗口间的数据传递 6.1 子窗口的使用 在Qt中主窗口和子窗口都是以类的形式存在的。添加子窗口和添加类十分类似。在主窗口中引用子窗口类的头文件并在主窗口类中增加一个子窗口类的成员变量。调用子窗口的show()函数即可显示子窗口。 6.2 窗口间的数据传递 Qt提供了多种方法实现窗口间的数据传递包括使用全局变量、公有成员函数和信号槽机制。 1使用全局变量。在主窗口中添加用于保存数据的全局变量然后在子窗口中访问全局变量从而实现数据的传递。 2使用公有成员函数。在子窗口类中增加公有成员函数用于接收数据。在主窗口中调用子窗口的公有成员函数从而实现数据的传递。 3使用信号和槽。在子窗口中定义信号信号的参数是需要传递的数据。在主窗口中定义槽函数用于接收信号发来的数据。通过将子窗口的信号连接到主窗口的槽函数实现数据的传递。 7 INI配置文件 7.1 介绍 INI文件是一种常用于Windows操作系统中的非正式标准用于保存软件的配置信息。INI文件由多个节和每个节下的键组成每个键包含键名和键值两部分键名和键值之间通过英文的等号连接。 7.2 使用Qt读写INI文件 Qt提供了QSettings类可以方便地实现INI文件的读写。QSettings类中关于INI文件读写的成员函数包括beginGroup()用于进入节endGroup()用于退出节setValue()用于写入键值value()用于读取键值contains()用于判断某个键值是否存在。