开发者社区> 吴英强> 正文

【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;
    }
}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C/C++ Qt 编译打包项目
Qt程序编译后,需要去qt目录拷贝几个文件,与qt程序放在一起该程序才可以脱离开发环境而独立运行下去,在开发环境下编译好代码以后,还需要进行以下操作将其打包才可以在别的机器上正常运行。
42 0
C/C++ Qt 常用数据结构
QT是一个跨平台的图形化类库,常用数据结构就是对C++ STL的二次封装,使其更加易用,如下是经常会用到的一些数据结构和算法笔记。
49 0
C/C++ Qt 信号自定义槽函数
Qt中实现自定义信号与槽函数,信号用于发送并触发槽函数,槽函数则是具体的功能实现,如下我们以老师学生为例子简单学习一下信号与槽函数的使用方法。
53 0
C/C++ Qt 命令行版网络通信
**实现简单的结构体传输:** 两端传输结构体。
43 0
C/C++ Qt 基本文件读写方法
Qt文件操作有两种方式,第一种使用QFile类的IODevice读写功能直接读写,第二种是利用 QFile和QTextStream结合起来,用流的方式进行文件读写。
99 0
C/C++ Qt QThread 线程组件应用
QThread库是QT中提供的跨平台多线程实现方案,使用时需要继承QThread这个基类,并重写实现内部的Run方法,由于该库是基本库,默认依赖于`QtCore.dll`这个基础模块,在使用时无需引入其他模块.
15 0
C/C++ Qt QChart 绘图组件应用
QtCharts 组件是QT中提供图表绘制的模块,该模块可以方便的绘制常规图形,Qtcharts 组件基于`GraphicsView`模式实现,其核心是`QChartView`和`QChart`的二次封装版。
80 0
C/C++ Qt 基础通用组件的应用
QT 是一个跨平台C++图形界面开发库,利用QT可以快速开发跨平台窗体应用程序,在QT中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率。
48 0
C/C++ Qt ToolBar 菜单栏组件应用
ToolBar工具栏在所有窗体应用程序中都广泛被使用,使用ToolBar可以很好的规范菜单功能分类,用户可根据菜单栏来选择不同的功能,Qt中默认自带ToolBar组件,当我们以默认方式创建窗体时,ToolBar就被加入到了窗体中,一般是以QToolBar的方式存在于对象菜单栏,如下所示。
70 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
继承与功能组合
立即下载
对象的生命期管理
立即下载
移动与复制
立即下载