在Qt5中,可以使用如下三种方式完成信号与槽的连接
使用lambda表达式的方式,需要在.pro中加入如下配置信息
CONFIG += C++11
使用Qt4的信号与槽的方式
使用Qt5的信号与槽的方式
关键测试代码
#include "widget.h"
#include <QPushButton>
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
this->setGeometry(500,500,500,500);
//method1:Lambda表达式
QPushButton *buttonChangeText = new QPushButton("original", this);
buttonChangeText->setGeometry(100, 100, 200, 20);
connect(buttonChangeText, &QPushButton::clicked,
[=]()
{
buttonChangeText->setText("changed");
}
);
//method2: 使用Qt4的宏函数的方式
QPushButton * buttonHide = new QPushButton("hide me",this);
buttonHide->setGeometry(100,150,200,20);
connect(buttonHide, SIGNAL(clicked()),buttonHide,SLOT(hide()));
//method2: 使用Qt5的方式,可以进行语法检查
QPushButton * buttonShow = new QPushButton("show button",this);
buttonShow->setGeometry(100,200,200,20);
connect(buttonShow, &QPushButton::clicked, buttonHide, &QPushButton::show);
}
Widget::~Widget()
{
}
实现功能
- 有三个按键,一个按键使用lambda表达式的方式,按下该按钮,该按钮的信息被改变。
- 按下第二个按键,该按键被隐藏起来。
- 按下第三个按键,被隐藏的按键显示出来。
测试效果
-
按下前
-
按下后