创建一个项目,提供三个按钮,第一个按钮实现播报第二个按钮的内容,播报结束后,设置自己不可用。第二个按钮的内容是关闭,实现功能是关掉整个项目,第三个按钮功能是将第一个按钮设置为可以状态
头文件
#ifndef F_UI_H
#define F_UI_H
#include <QMainWindow>
#include <QPushButton>
#include <QTextToSpeech>
class F_ui : public QMainWindow
{
Q_OBJECT
signals:
void singal_1();
public slots:
void showMes(); //声明展示函数
void say_mes(); //
public:
F_ui(QWidget *parent = nullptr);
~F_ui();
//定义一个按钮指针
QPushButton *btn1;
QPushButton *btn2;
QPushButton *btn3;
//定义一个播报者
QTextToSpeech speech;
};
#endif // F_UI_H
注意,如果要添加
#include <QTextToSpeech>
需要在.pro文件中添加
QT += texttospeech
函数文件:
创建视窗
this->resize(1280,720);
this->setMaximumSize(1920,1080); //设置最大尺寸
this->setMinimumSize(480,272); //设置最小尺寸
//this->setFixedSize(1000,500); //固定尺寸
//设置标题
this->setWindowTitle("My First Window");
//获取标题
QString title = this->windowTitle(); //得到窗口标题
qDebug() << title;
//设置背景色
this->setBackgroundRole(QPalette::Dark);
this->setAutoFillBackground(true);
this->move(50, 50);//移动位置
//输出宽度和高度
qDebug("Width = %d, Height = %d", this->width(), this->height());
//输出坐标点
qDebug("坐标点:%d ,%d",this->x(), this->y());
qDebug() << this->pos();
配置三个按钮的大小、位置、样式
btn1 = new QPushButton();
btn1->setParent(this); //设置父控件
btn1->resize(75,30);
btn1->move(0, height()/2);
btn1->setText("点击");
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);
然后设置逻辑
connect(btn1, &QPushButton::clicked, this, &F_ui::showMes); //QT5版本
connect(btn3, &QPushButton::clicked, [&]() //使用Larmda表达式当作槽函数
{
emit singal_1();
//speech.say(btn2->text());
});
connect(this, &F_ui::singal_1, this, &F_ui::say_mes); //将自定义信号连接到自定义槽中
connect(this, &F_ui::singal_1, [&]() //一个信号可以对应多个槽函数
{
//btn2->setText(btn3->text());
btn1->setEnabled(true);
});
connect(btn2, &QPushButton::clicked, [&] //使用Larmda表达式当作槽函数
{
this->close();
});
用到的函数
void F_ui::showMes()
{
speech.say(btn2->text()); //让系统语音读出按钮2上的内容
btn1->setEnabled(false); //让按钮1失效
}
//处理自定义槽函数
void F_ui::say_mes()
{
btn1->setEnabled(true); //恢复按钮1
}