平台网站建设教程,千里马招标网站,营销型网站是什么,有没有类似wordpress1 slot 是对ui控件数据 读取或更新的函数
public slots:void startCountdown();void updateCountdown(); startCountdown 点击ui上的按钮,触发信号signal(按钮默认),执行slot,读取ui数据 updateCountdown 满足条件signal(默认信号),执行slot,更新ui数据 因为要操作ui上的数据所…1 slot 是对ui控件数据 读取或更新的函数
public slots:void startCountdown();void updateCountdown(); startCountdown 点击ui上的按钮,触发信号signal(按钮默认),执行slot,读取ui数据 updateCountdown 满足条件signal(默认信号),执行slot,更新ui数据 因为要操作ui上的数据所以 slots 2 singal 默认信号(Qt内置的信号)和自定义信号
2.1 默认信号 按钮/计时器 都是默认信号 ui 按钮 点击了 触发默认信号 执行slot startCountdown connect(ui.startButton, QPushButton::clicked, this, countdown::startCountdown);
2.2 自定义信号
signals:void buttonClicked();
// 发射信号emit buttonClicked(); 当满足自定义的条件时,触发信号,让指定的 槽函数slot对 ui数据/控件操作 connect(this, MainWindow::buttonClicked, this, MainWindow::handleButtonClicked);3 总结
3.1 要操作ui 就被定义成slots
3.2 想要满足自定义条件 然后操作ui 就自定义信号 触发slot
4 例子 ui 界面 一个 QLabel 显示倒计时 三个 QSpinBox 设置倒计时 时 分 秒 一个 QButton 点击开始倒计时 .h 一个 点击ui 按钮后 读取 QSpinBox 数值的槽函数 (要操作ui) 一个 时刻更新ui QLabel显示时间的槽函数(要操作ui) 一个 成员函数 播放 闹钟声音(不要操作ui) 无自定义信号,除非想 自定义条件结束后 操作ui .cpp 在构造函数中: ui.setupUi(this); // 初始化并运行设计好的 UI connect(ui.startButton, QPushButton::clicked, this, countdown::startCountdown); connect(countdownTimer, QTimer::timeout, this, countdown::updateCountdown); 构造函数的作用是初始化对象并且可以在其中调用其他方法或函数以便在对象创建时就让它们运行起来。 5 代码
.h
#pragma once#include QtWidgets/QMainWindow
#include QObject
#include QTimer
#include QDebug
#include ui_countdown.hclass countdown : public QMainWindow
{Q_OBJECTpublic:countdown(QWidget *parent nullptr);~countdown();public slots:void startCountdown();void updateCountdown();private:QTimer countdownTimer; //对象 成员变量可以是各种数据类型int totalSeconds;private:void countdownFinished();Ui::countdownClass ui;
};.cpp
#include countdown.h
#include QMultimedia
#include QSound // 在qt vs tool - qt pj setting 中添加 mulitmediacountdown::countdown(QWidget *parent): QMainWindow(parent)
{// 构造函数 初始化 项目运行逻辑ui.setupUi(this);// 创建一个字体对象并设置字体大小为20QFont font;font.setPointSize(40);// 将字体应用于countdownLabelui.countdownLabel-setFont(font);connect(ui.startButton, QPushButton::clicked, this, countdown::startCountdown);// QT 内置信号 QTimer::timeout 不用自定义信号connect(countdownTimer, QTimer::timeout, this, countdown::updateCountdown);}countdown::~countdown()
{}void countdown::startCountdown()
{int hours ui.hourSpinBox-value();int minutes ui.minutesSpinBox-value();int seconds ui.secondsSpinBox-value();totalSeconds 0; // 类countdown 的成员函数 直接访问 自己的 成员(共有/私有)变量totalSeconds hours * 3600 minutes * 60 seconds;countdownTimer.start(1000);
}void countdown::updateCountdown()
{if (totalSeconds 0) {qDebug() totalSeconds totalSeconds;int hours totalSeconds / 3600;int minutes (totalSeconds % 3600) / 60;int seconds totalSeconds % 60;QString time QString(%1:%2:%3).arg(hours, 2, 10, QChar(0)).arg(minutes, 2, 10, QChar(0)).arg(seconds, 2, 10, QChar(0));ui.countdownLabel-setText(time);totalSeconds--;}else {ui.countdownLabel-setText(00:00:00);countdownTimer.stop();countdown::countdownFinished();}
}void countdown::countdownFinished() {qDebug() sound start;QSound::play(Ring09.wav); // 把wav 复制到项目文件夹下qDebug() sound end;}main.cpp
#include countdown.h
#include QtWidgets/QApplicationint main(int argc, char *argv[])
{QApplication a(argc, argv);countdown w;w.show();return a.exec();
}