码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-02-26 21:44:03      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

程序效果:

技术分享

技术分享

#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++学院】(16)QT版:幸运大抽奖

标签:

原文地址:http://blog.csdn.net/waldmer/article/details/43953117

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!