当前位置:网站首页>Introduction to Qt (6) - Implementation of the lottery system
Introduction to Qt (6) - Implementation of the lottery system
2022-08-11 00:02:00 【light chases rain】
一、ui设计
1.1 图像展示

1.2 类名定义

二、代码展示
2.1 MainWindow.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QIcon>
#include <QMessageBox>
#include <QPainter>
#include <QPixmap>
#include <QPoint>
#include <QMouseEvent>
#define TITLE_MOVE_HIGHT 200
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
void timerEvent(QTimerEvent *e); //time event function
void paintEvent(QPaintEvent *e); //Canvas background function
void mousePressEvent(QMouseEvent *e); //Determine the mouse press
void mouseMoveEvent(QMouseEvent *e); //Determine the mouse drag
void mouseReleaseEvent(QMouseEvent *e); //Determine if the mouse is released
~Widget();
private slots:
void on_StartButton_clicked(); //开始按钮
void on_CloseButton_clicked(); //退出按钮
private:
bool m_pressing; //Whether the mouse is being pressed——标志位
QPoint m_startPosition; //Gets when the mouse just started pressing,The global position information of the mouse
QPoint m_framePosition; //Gets when the mouse just started pressing,窗口(左上角)的位置信息
private:
Ui::Widget *ui;
bool m_Drawing; //Determine if a lottery is in progress
int myTimerId; //确定时间ID
QStringList m_listNum; //Define the list to be drawn
int m_CurPos; //Define the list index
QPixmap m_pix; //定义背景图片
};
#endif // WIDGET_H
2.2 main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
2.3 MainWindow.cpp
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
m_pressing = false;
m_Drawing = false;
//不显示标题栏
this->setWindowFlags(Qt::Window|Qt::FramelessWindowHint);
m_pix.load("C:/Users/DELL/Desktop/lottery/img/background.jpg");
ui->listWidget->setStyleSheet("background:gray");
ui->StartButton->setIcon(QIcon("C:/Users/DELL/Desktop/lottery/img/start.jpg"));
ui->CloseButton->setStyleSheet("QPushButton{border-image: url(C:/Users/DELL/Desktop/lottery/img/close1.jpg);}"
"QPushButton:hover{border-image: url(C:/Users/DELL/Desktop/lottery/img/close2.jpg);}"
"QPushButton:pressed{border-image: url(C:/Users/DELL/Desktop/lottery/img/close3.jpg);}");
m_listNum.push_back("吃饭");
m_listNum.push_back("睡觉");
m_listNum.push_back("打游戏");
m_listNum.push_back("锻炼");
m_listNum.push_back("运动");
m_listNum.push_back("跑步");
m_listNum.push_back("读书");
m_listNum.push_back("深度之眼");
m_listNum.push_back("进程间通信");
}
Widget::~Widget()
{
delete ui;
}
void Widget::timerEvent(QTimerEvent *e)
{
if(myTimerId == e->timerId())
{
m_CurPos++;
if(m_listNum.size() - 1 <= m_CurPos)
{
m_CurPos = 0;
}
if(0 == m_listNum.size())
{
killTimer(myTimerId);
m_Drawing = false;
ui->StartButton->setIcon(QIcon("C:/Users/DELL/Desktop/lottery/img/start.jpg"));
QMessageBox::warning(this,"温馨提示","already finished");
return;
}
ui->Listlabel->setText(m_listNum.at(m_CurPos));
}
}
void Widget::on_StartButton_clicked()
{
if(!m_Drawing)
{
m_Drawing = true;
ui->StartButton->setIcon(QIcon("C:/Users/DELL/Desktop/lottery/img/close1.jpg"));
myTimerId = this->startTimer(20);
}
else
{
m_Drawing = false;
ui->StartButton->setIcon(QIcon("C:/Users/DELL/Desktop/lottery/img/start.jpg"));
killTimer(myTimerId);
if(m_listNum.size() > 0)
{
QString strval = m_listNum.at(m_CurPos);
m_listNum.removeAt(m_CurPos);
ui->listWidget->addItem(new QListWidgetItem(strval));
}
}
}
void Widget::on_CloseButton_clicked()
{
if(QMessageBox::Yes == QMessageBox::question(this,"提示","Are you sure you want to quit this program?",QMessageBox::Yes | QMessageBox::No))
{
this->close();
}
}
void Widget::paintEvent(QPaintEvent *e)
{
QPainter painter(this);
QRect rc = rect();
painter.drawPixmap(rc,m_pix);
}
void Widget::mousePressEvent(QMouseEvent *e) //Determine the mouse press
{
if(e->button() == Qt::LeftButton)
{
QRect rcTop = rect();
rcTop.setBottom(rcTop.top() + TITLE_MOVE_HIGHT);
if(rcTop.contains(e->pos()))
{
m_pressing = true;
m_startPosition = e->globalPos();
m_framePosition = frameGeometry().topLeft();
}
}
}
void Widget::mouseMoveEvent(QMouseEvent *e) //Determine the mouse drag
{
if(e->buttons() == Qt::LeftButton)
{
if(m_pressing)
{
QPoint delta = e->globalPos() - m_startPosition;
move(m_framePosition + delta);
}
}
}
void Widget::mouseReleaseEvent(QMouseEvent *e) //Determine if the mouse is released
{
m_pressing = false;
}
三、成果展示

边栏推荐
- SAS数据处理技术(一)
- 7. yaml
- 定时器,同步API和异步API,文件系统模块,文件流
- 电脑桌面删除的文件回收站没有,电脑上桌面删除文件在回收站找不到怎么办
- 13. 内容协商
- How to quickly grasp industry opportunities and introduce new ones more efficiently is an important proposition
- 11. Custom Converter
- 服务器小常识
- SQL injection base - order by injection, limit, wide byte
- App regression testing, what are the efficient testing methods?
猜你喜欢

“蔚来杯“2022牛客暑期多校训练营3 DF题解

Web-based meal ordering system in epidemic quarantine area

16. 文件上传

11. Custom Converter

15. 拦截器-HandlerInterceptor

8. WEB 开发-静态资源访问

There is no recycle bin for deleted files on the computer desktop, what should I do if the deleted files on the desktop cannot be found in the recycle bin?

sqlmap结合dnslog快速注入

C语言篇,操作符之 移位运算符(>>、<<)详解

Starting a new journey - Mr. Maple Leaf's first blog
随机推荐
鲲鹏编译调试及原生开发工具基础知识
深度学习 Transformer架构解析
Activiti7子流程之Call activity
5. Lombok
逮到一个阿里 10 年老 测试开发,聊过之后收益良多...
好用的翻译插件-一键自动翻译插件软件
Based on the SSM to reach the phone sales mall system
Talking about jsfuck coding
只会懒汉式和饿汉式 你还不懂单例模式!
服务器小常识
线上突然查询变慢怎么核查
Timers, synchronous and asynchronous APIs, file system modules, file streams
Design and Realization of Employment Management System in Colleges and Universities
Pagoda Test-Building PHP Online Mock Exam System
Geogebra 教程之 01 什么是Geogebra,真的可以提高我们数学水平么?
ROS Experiment Notes - Validation of UZH-FPV Dataset
【C语言篇】表达式求值(隐式类型转换,算术转换)
13. 内容协商
报错:Client does not support authentication protocol requested by server; consider upgrading MySQL cli
Design and implementation of flower online sales management system