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

哈尔滨网站设计公司/个人网页在线制作

哈尔滨网站设计公司,个人网页在线制作,产品宣传小视频制作,求邯郸网站制作一、信号与槽概念 信号(Signal)就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged() 信号。 槽&…

一、信号与槽概念

信号(Signal)就是在特定情况下被发射的事件,例如PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的 CurrentIndexChanged() 信号。

槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的C++函数是一样的,可以定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数被自动执行。

二、信号与槽关联

信号与槽关联是用 QObject::connect() 函数实现的,其基本格式是: QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));其中,sender 是发射信号的对象的名称,signal() 是信号名称。信号可以看做是特殊的函数,需要带括号,有参数时还需要指明参数。receiver 是接收信号的对象名称,slot() 是槽函数的名称,需要带括号,有参数时还需要指明参数。SIGNAL 和 SLOT 是 Qt 的宏,用于指明信号和槽,并将它们的参数转换为相应的字符串

如:关闭窗口的信号与槽的关联:

QObject::connect(pushButton, SIGNAL(clicked()), MainWindow, SLOT(close()));

三种实现事件的方式:

1.手动创建信号和槽:

a.在 UI 设计器里,单击上方工具栏里的“Edit Widgets”按钮:

b.在 UI 设计器里,单击上方工具栏里的“Edit Signals/Slots”按钮,窗体进入信号与槽函数编辑状态。将鼠标移动到某个按钮上方,再按下鼠标左键,移动到窗体的空白区域释放左键。

使用该方法构建项目后,在ui_xxx.h中的setupUi函数中,有以下代码,会自动关联信号与槽。

        QObject::connect(pushButton_Sure, SIGNAL(clicked()), Dialog, SLOT(accept()));QObject::connect(pushButton_Cancel, SIGNAL(clicked()), Dialog, SLOT(reject()));QObject::connect(pushButton_Close, SIGNAL(clicked()), Dialog, SLOT(close()));

2.在Edit Widgets界面,右键点击某个按钮->转到槽,选择信号并双击,添加代码。如:实现文字倾斜功能:

void Dialog::on_checkBox_Underline_clicked(bool checked)
{QFont font=ui->textEdit->font();font.setUnderline(checked);ui->textEdit->setFont(font);
}

使用该方法构建项目后,在ui_xxx.h中的setupUi函数中,有以下代码:

QMetaObject::connectSlotsByName(Dialog); 

connectSlotsByName(Dialog); 函数将搜索 Dialog界面上的所有组件,将信号与槽函数匹配的信号和槽关联起来。如void Dialog::on_checkBox_Underline_clicked(bool checked)函数正好是checkBox_Underline的clicked的槽函数,如同执行了下面的这样一条语句:

QObject::connect(pushButton, SIGNAL(clicked(bool)), this, SLOT(on_checkBox_Underline_clicked(bool)));

3.全代码,手动编写.h文件和.cpp文件,如实现文字颜色变化功能:

.h文件中,private slots下添加函数声明:void setTextFontColor();

.cpp中,实现该函数:

void Dialog::setTextFontColor()
{QPalette plet=ui->textEdit->palette();if (ui->radioButton_Blue->isChecked())plet.setColor(QPalette::Text,Qt::blue);else if (ui->radioButton_Red->isChecked())plet.setColor(QPalette::Text,Qt::red);else if (ui->radioButton_Black->isChecked())plet.setColor(QPalette::Text,Qt::black);elseplet.setColor(QPalette::Text,Qt::black);ui->textEdit->setPalette(plet);
}

.cpp中,还需要在 QWDialog 的构造函数中手工建立信号与槽的连接:

Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog)
{ui->setupUi(this);connect(ui->radioButton_Blue,SIGNAL(clicked()),this,SLOT(setTextFontColor()));connect(ui->radioButton_Red,SIGNAL(clicked()),this,SLOT(setTextFontColor()));connect(ui->radioButton_Black,SIGNAL(clicked()),this,SLOT(setTextFontColor()));
}

 

关于信号与槽的使用,有以下一些规则需要注意:

1.一个信号可以连接多个槽,槽函数按照建立连接时的顺序依次执行;

2.多个信号可以连接同一个槽;

3.一个信号可以连接另外一个信号;

4.严格的情况下,信号与槽的参数个数和类型需要一致,至少信号的参数不能少于槽的参数。如果不匹配,会出现编译错误或运行错误;

5.在使用信号与槽的类中,必须在类的定义中加入宏 Q_OBJECT。

 

http://www.lbrq.cn/news/1590913.html

相关文章:

  • 举例说明/站外seo推广
  • 网站建设 软文/seo引擎
  • wordpress汉字/seo推广培训课程
  • 福建网站开发企业/网站查找工具
  • 怎样推广公司的网站/疫情防控最新政策
  • 怎么用模板建网站/百度推广登录入口
  • 无锡公共工程建设中心网站/整站seo免费咨询
  • 装修客户资源在哪里找/搜索引擎优化的各种方法
  • 中山市政府网站建设/营销策略范文
  • 开源cms建站/seo优化报告
  • 网站版面做的很好的公司/网站外链平台
  • wordpress在线监测/免费seo诊断
  • 宁夏自治区住房城乡建设厅网站/google chrome官网
  • wordpress添加一级菜单/seo外包公司优化
  • 微网站平台微网站建设方案模板/上海营销公司
  • 网站规划与开发技术/济南网站万词优化
  • 做网站送企业邮箱/全网推广成功再收费
  • 百度上的网站怎么做/免费推广app软件下载
  • php网站开发培训/成都seo网络优化公司
  • 山东泰安疫情/兰州网络推广优化怎样
  • 北京企业建设网站公司哪家好/个人博客网站模板
  • 厦门做网站的公司/爱站网站长工具
  • 网站建设公司经营/潍坊快速网站排名
  • 深圳网站建设 网络推广/搜索引擎优化的策略主要有
  • 设计素材网站哪个最好推荐/郑州网络营销学校
  • 郑州直销网站制作/seo搜索优化
  • 网网站设计网/免费推广平台排行
  • 怎么做asp网站/抖音seo代理
  • wordpress 分类主题/seo工具有哪些
  • 沈阳做购物网站电话/seo实战密码第三版pdf
  • jetson上使用opencv的gstreamer进行MIPI和USB摄像头的连接以及udp推流
  • 2025年我国半导体材料产业链全景分析
  • Python Socket 脚本深度解析与开发指南
  • 大数据存储域——Hive数据仓库工具
  • .Net下载共享文件夹中的文件
  • 《Python基础》第3期:使用PyCharm编写Hello World