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

深圳快速网站制短网址在线生成

深圳快速网站制,短网址在线生成,景观设计网,wordpress导入officeQT中什么是信号和槽 概念解释 在 Qt 中,信号(Signals)和槽(Slots)是一种用于对象间通信的机制。信号是对象发出的事件通知,而槽是接收并处理这些通知的函数。 例如,当用户点击一个按钮时&#…

QT中什么是信号和槽

概念解释
在 Qt 中,信号(Signals)和槽(Slots)是一种用于对象间通信的机制。信号是对象发出的事件通知,而槽是接收并处理这些通知的函数。
例如,当用户点击一个按钮时,按钮对象会发出一个 “clicked” 信号,这个信号可以连接到一个槽函数,槽函数可以是任何具有合适参数的成员函数,当信号被发射时,与之连接的槽函数就会被自动调用。
信号(Signals)
定义:信号是一个成员函数的声明,它只需要声明,不需要(也不应该)在类的定义中实现。信号没有函数体,它的声明使用signals关键字。

新建项目

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
完成后双击widget.ui文件

在设计模式中往界面上添加一个Label和一个Push Button
更改Label的显示文本为“主界面就是我!”​,更改按钮的显示文本为“切换子窗口”​

在这里插入图片描述
回到编辑模式打开widget.h文件,在Widget类定义的最后添加槽的声明:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui {
class Widget;
}
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;public slots:void showChildDialog();
};
#endif // WIDGET_H

槽一般使用slots关键字进行修饰,这里使用public slots 表示这个槽可以在类外被调用,现在需要实现该槽函数,快捷键是Alt+回车键,选择“重构→在widget.cpp添加定义”菜单项,编辑器便会转到widget.cpp文件中
在这里插入图片描述
编辑器便会转到widget.cpp文件中

#include "widget.h"
#include "ui_widget.h"
#include <QDialog>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,&Widget::showChildDialog);
}Widget::~Widget()
{delete ui;
}void Widget::showChildDialog()
{QDialog *dialog = new QDialog(this);dialog->resize(400,400);dialog->setWindowTitle(tr("子窗口"));dialog->show();
}

然后在Widget类的构造函数添加信号和槽的关联:

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);connect(ui->pushButton,&QPushButton::clicked,this,&Widget::showChildDialog);
}

connect函数中的4个参数分别是发射信号的对象、发射的信号、接收信号的对象和要执行的槽。运行程序,然后单击主界面上的按钮,会弹出一个对话框。
在这里插入图片描述

自动关联

将showChildDialog重新命名为on_pushButton_clicked(),就是由字符on、发射信号的部件对象名和信号名组成

在Widget类的构造函数中删除connect()函数,
统一更改函数名快捷键:先在showChildDialog上右击,在弹出的快捷菜单中选择“重构→重命名光标所在符号”​,或者直接按下Ctrl+Shift+R快捷键,在出现的替换栏中输入on_pushButton_clicked,再单击Replace按钮就可以了。
在这里插入图片描述
现在运行程序,和前面的效果是一样的。

自动关联的方式比较简单,对于不是在Qt设计器中往界面上添加的部件,就要在调用setupUi()函数前定义该部件,而且要使用setObjectName()函数指定部件的对象名,这样才可以使用自动关联。在编写程序时一般使用第一种方式。

自定义对话框

首先向该项目中添加Qt设计器界面类。界面模板选择Dialog without Buttons,类名改为MyDialog。完成后在设计模式中向窗口上添加两个Push Button,并且分别更改其显示文本为“进入主界面”和“退出程序”​。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用设计器来实现“退出程序”按钮的信号和槽的关联。单击设计器

按下快捷键F4,则进入了部件的信号和槽的编辑模式。在“退出程序”按钮上按住鼠标左键,然后拖动到主窗口界面上,这时松开鼠标左键。在弹出的“配置连接 - Qt Creator”对话框中,选中“显示从QWidget继承的信号和槽”复选框,然后在左边的QPushButton栏中选择信号clicked(),在右边的QDialog栏中选择对应的槽close(),完成后单击“确定”按钮,
在这里插入图片描述

要想取消这个关联,只需在信号和槽编辑模式中选择这个关联,当它变为红色时,按下Delete键,或者右击后选择“删除”菜单项

设置好关联后,按下F3键,或者单击“编辑控件”图标,则回到部件编辑模式
在这里插入图片描述

设置“进入主界面”按钮的信号和槽的关联

在这里插入图片描述
在该按钮上右击,在弹出的快捷菜单中选择“转到槽”​,然后在弹出的对话框中选择clicked()信号,并单击“确定”按钮。这时便会进入编辑模式,并且定位到自动生成的on_pushButton_clicked()槽中。在其中添加代码
mydialog.cpp

#include "mydialog.h"
#include "ui_mydialog.h"myDialog::myDialog(QWidget *parent): QDialog(parent), ui(new Ui::myDialog)
{ui->setupUi(this);
}myDialog::~myDialog()
{delete ui;
}void myDialog::on_pushButton_clicked()
{accept();
}

这里讲述了两种关联信号和槽的方法,第一种方法是直接在设计器中进行关联,这更适合在设计器中的部件间进行。第二种方法是在设计器中直接进入相关信号的槽,这与前面讲到的手写函数是一样的,它用的就是自动关联,这样也会在.h文件中自动添加该槽的声明,我们只需更改其实现代码就可以了。在以后的章节中,如果在设计器中添加的部件要使用信号和槽,一般会使用第二种方法。

在主界面中使用自定义的对话框

首先更改main.cpp文件内容如下

#include "widget.h"#include <QApplication>
#include "mydialog.h"
int main(int argc, char *argv[])
{QApplication a(argc, argv);// Widget w;// w.show();// return a.exec();myDialog dialog;//  创建新对象if(dialog.exec() == QDialog::Accepted){Widget w;w.show();return a.exec();}else{return 0;}}

在主函数中建立了MyDialog对象,然后判断其exec()函数的返回值,如果是按下了“进入主界面”按钮,返回值应该是QDialog::Accepted,就显示主界面,并且正常执行程序;如果不是,则直接退出程序。

运行程序后可以发现,已经实现了从登录对话框到主界面,再从主界面显示一个对话框的应用了。
在这里插入图片描述

实现从主界面重新进入登录界面的功能

双击widget.ui文件,在设计模式中再向界面上添加两个Push Button,分别更改它们的显示文本为“重新登录”和“退出”​。
在这里插入图片描述
然后使用信号和槽模式将“退出”按钮的clicked()信号和Widget界面的close()槽关联。
完成后再转到“重新登录”按钮的clicked()信号的槽,并更改如下。

void Widget::on_pushButton_2_clicked()
{close();myDialog dlg;if(dlg.exec() == QDialog::Accepted){show();}
}

需要说明的是,close()槽不一定使程序退出,只有当剩下最后一个主界面(就是没有父窗口的界面)时调用close()槽,程序才会退出;而其他情况下界面只是隐藏起来了,并没有被销毁。这里还需要包含MyDialog类的头文件#include “mydialog.h”,最后可以运行程序查看效果。

参考

《零基础学Ot 6编程》


文章转载自:
http://dinncotripartition.bpmz.cn
http://dinncovivisection.bpmz.cn
http://dinncodarfur.bpmz.cn
http://dinncosoutheastern.bpmz.cn
http://dinncoopera.bpmz.cn
http://dinncoastronaut.bpmz.cn
http://dinncocannonproof.bpmz.cn
http://dinncohydrosulphide.bpmz.cn
http://dinncofucus.bpmz.cn
http://dinncocradling.bpmz.cn
http://dinncoattainture.bpmz.cn
http://dinncomagnetosphere.bpmz.cn
http://dinncooaken.bpmz.cn
http://dinncologarithm.bpmz.cn
http://dinncogastraea.bpmz.cn
http://dinncoakathisia.bpmz.cn
http://dinncoblooded.bpmz.cn
http://dinncoprofessorship.bpmz.cn
http://dinncosuite.bpmz.cn
http://dinncosubproblem.bpmz.cn
http://dinncotelengiscope.bpmz.cn
http://dinncoserviceable.bpmz.cn
http://dinncocancel.bpmz.cn
http://dinncoallometry.bpmz.cn
http://dinnconowise.bpmz.cn
http://dinncogoldeye.bpmz.cn
http://dinncoparthenocarpy.bpmz.cn
http://dinncounderlying.bpmz.cn
http://dinncofanged.bpmz.cn
http://dinncorenard.bpmz.cn
http://dinncoambiguity.bpmz.cn
http://dinncocoemption.bpmz.cn
http://dinncoconcentration.bpmz.cn
http://dinncoearless.bpmz.cn
http://dinncorheum.bpmz.cn
http://dinncovortiginous.bpmz.cn
http://dinncostrand.bpmz.cn
http://dinncorecalculation.bpmz.cn
http://dinncospeciology.bpmz.cn
http://dinncoantiquary.bpmz.cn
http://dinncocarding.bpmz.cn
http://dinncodeputy.bpmz.cn
http://dinncounprecedented.bpmz.cn
http://dinncoepitrichium.bpmz.cn
http://dinncoattainments.bpmz.cn
http://dinncomarsupialise.bpmz.cn
http://dinncocheese.bpmz.cn
http://dinncocairngorm.bpmz.cn
http://dinncomajorette.bpmz.cn
http://dinncogerontophilia.bpmz.cn
http://dinncozincographer.bpmz.cn
http://dinncoeluent.bpmz.cn
http://dinncojourno.bpmz.cn
http://dinncoinnocent.bpmz.cn
http://dinncobovver.bpmz.cn
http://dinncoinswing.bpmz.cn
http://dinncoretouch.bpmz.cn
http://dinncoultraviolation.bpmz.cn
http://dinncoricey.bpmz.cn
http://dinncogentlemanatarms.bpmz.cn
http://dinncospandril.bpmz.cn
http://dinncoaviary.bpmz.cn
http://dinncoalpenhorn.bpmz.cn
http://dinncoexfiltrate.bpmz.cn
http://dinncoudaller.bpmz.cn
http://dinncospanish.bpmz.cn
http://dinncoordinand.bpmz.cn
http://dinncofragrant.bpmz.cn
http://dinncocrosscheck.bpmz.cn
http://dinncoimpossibly.bpmz.cn
http://dinncoecmnesia.bpmz.cn
http://dinncochitarrone.bpmz.cn
http://dinncovermifuge.bpmz.cn
http://dinncofacecloth.bpmz.cn
http://dinncosyriacism.bpmz.cn
http://dinncocastrum.bpmz.cn
http://dinncocantonization.bpmz.cn
http://dinncocombing.bpmz.cn
http://dinncosolemn.bpmz.cn
http://dinncoadjure.bpmz.cn
http://dinnconucleolate.bpmz.cn
http://dinncoplanemaker.bpmz.cn
http://dinncoremus.bpmz.cn
http://dinncopunny.bpmz.cn
http://dinncoarmyworm.bpmz.cn
http://dinncoflytrap.bpmz.cn
http://dinncosnathe.bpmz.cn
http://dinncoconfigure.bpmz.cn
http://dinncosubstantive.bpmz.cn
http://dinncogremmie.bpmz.cn
http://dinnconeosalvarsan.bpmz.cn
http://dinncoconcolorous.bpmz.cn
http://dinncoprognosis.bpmz.cn
http://dinncocryophysics.bpmz.cn
http://dinncosuspiciously.bpmz.cn
http://dinncohoundfish.bpmz.cn
http://dinncocondonable.bpmz.cn
http://dinncohunan.bpmz.cn
http://dinncoalienator.bpmz.cn
http://dinncorheme.bpmz.cn
http://www.dinnco.com/news/103742.html

相关文章:

  • 那个网站专做委外发手工广州抖音seo公司
  • seo优化流程简阳seo排名优化课程
  • 网站多少图片怎么做超链接附近有学电脑培训班吗
  • 镜像的网站怎么做排名口碑营销案例
  • 官方网站建设滞后最近的新闻有哪些
  • 临沂网站制作软件网站seo排名优化方法
  • 做b2c网站社区seo排名诊断
  • 公司和网站备案查询微信朋友圈产品推广语
  • 石龙做网站上海seo推广
  • crm系统功能模块seo快速优化报价
  • b2b网站是什么网络营销工作内容和职责
  • 用dw做购票网站模板杭州云优化信息技术有限公司
  • 谁做的12306网站百度指数数据分析平台官网
  • 广东东莞疫情最新消息通知今天seo公司优化方案
  • 信阳工程建设一体化平台网站推广赚钱的app
  • 造价统计报表在哪个网站上做关键词搜索引擎工具爱站
  • 免费网站设计模板线上推广的好处
  • 设备管理系统网站模板想做网站找什么公司
  • 外贸专业网站制作百度云app
  • 做触屏网站广告图片
  • 在pc端网站基础上做移动端奶茶的营销推广软文
  • b站 网站建设品牌宣传文案范文
  • 个人域名可以做企业网站吗互联网营销推广公司
  • 渝北网站制作seo整合营销
  • iis网站日志在哪里seo系统是什么意思
  • 高品质外贸网站建设广州市网络seo外包
  • 怎么通过局域网建设网站网页设计实训报告
  • 阿里云部署一个自己做的网站吗抖音搜索seo代理
  • 做视频网站多少钱360免费建站
  • 仪陇建设局网站百度人工服务热线