QT实现简单的抽奖界面
自学了一个多月的QT框架,总想写点什么出来,大型的东西知识面还是不够,想起有一次班里搞活动用了一个小小的抽奖软件,当时就觉得,还不错哦,自己能写一个出来就牛逼了呀,所以学了QT之后,自己就花了几十分钟简单的实现一下。其实是很简单的
先上图看看效果
操作说明
用户只需要设置选取范围,点击开始抽奖即可得到抽奖结果,默认范围是0 - 20。
下面看代码:
代码块
代码块语法遵循标准markdown代码,例如:
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_pushButton_clicked();//头文件中自动生成按钮响应的槽
void changSlots();//数字改变的槽
private:
Ui::Widget *ui;
};
//下面看cpp代码
#include "widget.h"
#include "ui_widget.h"
#include <QTimer> //加入需要的定时器类
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget) //构造函数
{
ui->setupUi(this);//QT提供的界面设计
ui -> lineEdit->setText("20");//设置抽取范围初始值为20
ui -> label -> setFont(QFont("Timers", 50, QFont::Bold));
ui ->label -> setText("0");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()//点击开始抽奖按钮响应的槽
{
QTimer *timer = new QTimer(this);
QTimer *timer2 = new QTimer(this);//声明两个定时器
connect(timer, SIGNAL(timeout()), this, SLOT(changSlots())); //80毫秒后定时改变label中的值
connect(timer2,SIGNAL(timeout()),timer,SLOT(stop()));
//两秒后定时关掉定时器timer
timer -> start(80);
timer2 -> start(2000);
}
void Widget::changSlots()
{
QString num = ui -> lineEdit ->text();
int numb = num.toInt(); //获取选取范围并转换成整形
int a = qrand() % numb;
QString s = QString::number(a,10);//将数字转换成字符串形
ui ->label -> setText(s);//设置到label显示出来
}
//main.cpp中的代码
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.setWindowTitle("随机抽奖");//设置窗口显示标题
w.setMinimumSize(400,300);
w.setMaximumSize(400,300);//设置窗口大小不变
w.show();
return a.exec();
}
#endif // WIDGET_H
... prompt'''
脚注
该程序QT5.5版本编写的,windows7平台下运行,有什么不足的地方请多多指教。
下面附上源代码:
链接:http://pan.baidu.com/s/1co1rbw 密码:ytnj
转载自原文链接, 如需删除请联系管理员。
原文链接:QT实现简单的抽奖界面,转载请注明来源!