目的:
通过编写Qt的蜂鸣器控制案例,熟悉Qt的槽函数,以及按钮功能的实现。
前提:
已经参考我的08_树莓派安装Qt开发环境安装好了树莓派的Qt环境
目录
1、 基础知识
当用户出发一个菜单动作时,就产生一个菜单触发信号,主窗口用相应的操作响应信号,执行相应的操作,该响应操作即为槽。
信号和槽遵循C++的基本语法,在定义信号和槽时,只需添加关键字slots和signals即可,例如:
...
public slots:
void setValue(int value);
signals:
void valueChanged(int newValue);
...
要实现信号和槽的关联,用connect操作实现,例如:
connect(aboutAct,SIGNAL(triggered()),this,SLOT(about()));
信号和槽时Qt对象的重要特征,使用的信号和槽必须时QObject的子类,否则无法使用信号和槽来建立关联。
2、功能实现
2.1、新建工程
工程名02beep,参考08_树莓派安装Qt开发环境
的demo工程新建章节
图2-1-1 工程名
2.2、配置蜂鸣器控制按钮
2.2.1、添加两个按钮按键
图2-2-1 创建两个butun按钮
2.2.2、配置槽函数
右击配置槽函数
图2-2-2 创建槽函数
2.3、 编写对应的代码
在mainwindow.cpp中编写对应的控制代码,代码参考03_基于wiringPi的GPIO控制-蜂鸣器。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <wiringPi.h>
#include <stdio.h>
#include <stdlib.h>
#include <QDebug>
#define GPIOPIN 0 //定义蜂鸣器引脚GPIO0
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
int ret;
//第一步: 初始化wiringPi
ret = wiringPiSetup(); //编号为0 ,需要在root权限下才能执行
if(ret == -1)
{
qDebug("wiringPiSetup is error\r\n");
}
//第二步:设置蜂鸣器引脚为输出引脚
pinMode(GPIOPIN, OUTPUT);
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
digitalWrite(GPIOPIN, HIGH);
}
void MainWindow::on_pushButton_2_clicked()
{
digitalWrite(GPIOPIN,LOW);
}
在配置文件中添加软链接库-lwiringPi
LIBS += -lwiringPi
图2-3-1 添加软链接库
2.4、实验现象
备注:
此时的蜂鸣器引脚已经接好在树莓派拓展引脚的GPIO0引脚上。
编译运行目标程序,实现蜂鸣器的控制。
点击ON蜂鸣器鸣叫,点击CLOSE蜂鸣器停止鸣叫。