【C/C++学院】(16)QT版:幸运大抽奖

简介: <p><span style="color:rgb(90,90,90); font-family:'microsoft yahei'; font-size:18px; line-height:29.700000762939453px; white-space:pre-wrap">程序效果:</span></p> <p><span style="color:rgb(90,90,90); f

程序效果:



#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QLabel>
#include <QPushButton>
#include <QTimer>
#include <QStringList>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
private slots:
    void on_clicked();
    void on_timer();
private:
    QLabel *label1;
    QPushButton *btn1;
    QTimer *tm;
    QStringList strlist;
};


#endif // DIALOG_H

#include "dialog.h"
#include <QVBoxLayout>
#include <QFont>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(tr("幸运大抽奖"));//设置窗口标题
    label1 = new QLabel;
    label1->setText(tr("开始幸运大抽奖"));
    QFont font;
    font.setBold(true);//设置字体为粗体
    font.setPointSize(80);//设置字号
    label1->setFont(font);

    btn1 = new QPushButton;
    btn1->setText(tr("开始"));

    QVBoxLayout *layout1 = new QVBoxLayout(this);
    layout1->addWidget(label1, 0, Qt::AlignCenter);//加入label1标签,并且居中显示
    layout1->addWidget(btn1);
   // layout1->setSizeConstraint(QLayout::SetFixedSize);//设置layout大小和控件尺寸一致,使窗口不能更改大小

    QFile file("student.txt");
    if (file.open(QFile::ReadOnly))//以只读的方式打开student.txt文件
    {
        QTextStream stream(&file);
        while(!stream.atEnd())
        {
            strlist.append(stream.readLine());//将文件内容放到strlist中
        }
        file.close();
    }else
    {
        //如果打开student.txt文件失败,程序退出
        QMessageBox::critical(this, tr("错误"), file.errorString());
        exit(0);
    }
    tm = new QTimer(this);
    connect(tm, SIGNAL(timeout()), this, SLOT(on_timer()));
    connect(btn1, SIGNAL(clicked()), this, SLOT(on_clicked()));
}

Dialog::~Dialog()
{

}

void Dialog::on_clicked()
{
    static bool status = true;
    if (status)
    {
        btn1->setText("停止");//如果isok为true,设置按钮标题为“停止”
        tm->start(50);//启动计时器,没0.05秒执行一次on_timer函数
        status = false;
    }else
    {
        btn1->setText("开始");//如果isok为false,设置按钮标题为“开始”
        tm->stop();//停止计时器
        status = true;
    }
}

void Dialog::on_timer()
{
    if (strlist.count() == 0)
    {
        return ;//如果strlist中没有内容,函数返回
    }

    static int i = 0;
    label1->setText(strlist[i]);//从0到strlist.count(),循环显示strlist中每一项的内容
    i++;
    if (i >= strlist.count())
    {
        i = 0;
    }
}


目录
相关文章
|
17天前
|
开发框架 Linux C语言
C、C++、boost、Qt在嵌入式系统开发中的使用
C、C++、boost、Qt在嵌入式系统开发中的使用
29 1
|
25天前
|
存储 网络协议 C语言
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
【C/C++ 串口编程 】深入探讨C/C++与Qt串口编程中的粘包现象及其解决策略
76 0
|
25天前
|
存储 传感器 安全
【串口通信】使用C++和Qt设计和实现串口协议解析器(二)
【串口通信】使用C++和Qt设计和实现串口协议解析器
45 0
|
25天前
|
存储 开发框架 算法
【串口通信】使用C++和Qt设计和实现串口协议解析器(一)
【串口通信】使用C++和Qt设计和实现串口协议解析器
65 0
|
30天前
|
安全 前端开发 C++
C++视角下的Qt按钮:从基础应用到高级定制(二)
C++视角下的Qt按钮:从基础应用到高级定制
45 2
|
23天前
|
编译器 API 数据安全/隐私保护
深入对比:Qt 的 QFile/QFileInfo 和与 C++17 Filesystem 和标准文件流 的细节剖析
深入对比:Qt 的 QFile/QFileInfo 和与 C++17 Filesystem 和标准文件流 的细节剖析
96 3
|
25天前
|
机器学习/深度学习 文字识别 并行计算
【C/C++ OCR识别】深入探索:Qt C++与OCR识别的完美结合
【C/C++ OCR识别】深入探索:Qt C++与OCR识别的完美结合
69 2
|
28天前
|
监控 C++
C++ Qt开发:QProcess进程管理模块
Qt是一个跨平台的C++图形库,简化了窗体应用开发,支持通过拖放组件提升效率。本章节关注`QProcess`组件,它用于控制和管理进程,例如执行命令、运行可执行文件及与外部进程通信。`QProcess`提供多种方法如`start`、`waitForStarted`和`waitForFinished`等,实现启动、监控和交互。示例展示了如何使用`QProcess`获取系统进程和信息,通过`tasklist`和`systeminfo`命令,并将结果展示在`QTreeWidget`中。
28 0
C++ Qt开发:QProcess进程管理模块
|
29天前
|
SQL XML API
Qt C++ 模块 描述列表【从Qt 官网 6.5 版本翻译】
Qt C++ 模块 描述列表【从Qt 官网 6.5 版本翻译】
13 0
|
29天前
|
Java API C++
【C++ 与Qt 线程】C++ std::thread 与Qt qthread多线程混合编程
【C++ 与Qt 线程】C++ std::thread 与Qt qthread多线程混合编程
40 1

推荐镜像

更多