题目:
创建一个项目,提供三个按钮
第一个按钮实现播报第二个按钮的内容,播报结束后,设置自己不可用。
第二个按钮的内容是关闭,实现功能是关掉整个项目
第三个按钮功能是将第一个按钮设置为可用状态
代码实现
1、MyWnd.h
#ifndef MYWND_H
#define MYWND_H
#include <QMainWindow>
#include <QPushButton>
#include <QTextToSpeech>
class MyWnd : public QMainWindow
{
Q_OBJECT
public slots:
void showMes(); //声明展示函数
void resume();
public:
MyWnd(QWidget *parent = nullptr);
~MyWnd();
//定义三个按钮指针
QPushButton *btn1;
QPushButton *btn2;
QPushButton *btn3;
//定义一个播报者
QTextToSpeech speech;
};
#endif // MYWND_H
注意:QTextToSpeech头文件的使用还需要在.pro文件中添加QT += texttospeech
2、MyWnd.cpp
#include "mywnd.h"
#include <QDebug>
#include <QPushButton>
#include <QTextToSpeech>
//作用为播报bnt1中的内容并设置bnt2可用
void MyWnd::showMes()
{
speech.say(btn1->text());
btn2->setEnabled(true);
}
//作用为播报bnt3中的内容并设置bnt2不可用
void MyWnd::resume()
{
speech.say(btn3->text());
btn2->setEnabled(false);
}
MyWnd::MyWnd(QWidget *parent)
: QMainWindow(parent)
{
this->resize(1024,768); //重新设置主控件大小
this->setMaximumSize(1200,900); //设置最大尺寸
this->setMinimumSize(500,250); //设置最小尺寸
//this->setFixedSize(1000,800); //固定主控件大小
//设置窗口标题
this->setWindowTitle("HomeWork");
//作用为将btn2设置为可用状态
btn1 = new QPushButton();
btn1->setParent(this);
btn1->resize(75,30);
btn1->move(0,height()/2);
btn1->setText("恢复");
//实现播报btn3的内容,播报结束后,设置自己不可用
btn2 = new QPushButton("播报",this);
btn2->move(btn1->width(),height()/2);
btn2->resize(btn1->size());
//实现功能是关掉整个项目
btn3 = new QPushButton("关闭",this);
btn3->resize(btn1->size());
btn3->move(btn1->width()+btn2->width(),height()/2);
//连接btn1发射的信号给showMes处理
//connect(btn1,SIGNAL(clicked()),this,SLOT(showMes())); //QT4的版本
connect(btn1, &QPushButton::clicked,this, &MyWnd::showMes); //QT5的版本
connect(btn3,&QPushButton::clicked,[&](){
this->close();
});
//连接btn2发射的信号给resume处理
//connect(btn2,SIGNAL(clicked()),this,SLOT(resume())); //QT4的版本
connect(btn2, &QPushButton::clicked,this, &MyWnd::resume); //QT5的版本
}
MyWnd::~MyWnd()
{
}
3、main.cpp
#include "mywnd.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWnd w;
w.show();
return a.exec();
}