Qt实现全屏下玫瑰花(含详细注释)

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt实现全屏下玫瑰花(含详细注释)相关的知识,希望对你有一定的参考价值。

功能:

1. 识别屏幕分辨率

2. 托盘程序

3.随机下玫瑰花


程序源码及素材下载:
http://pan.baidu.com/s/1ceH2wQ

 

IDE Qt Creator

先上图:




部分代码展示:

GBK.h

<span style="font-family:SimSun;font-size:18px;">#ifndef _QT_GBK_H
#define _QT_GBK_H


#include <QString>
#include <QTextCodec>
#include <string>
using std::string;

class GBK

public:
	// QString(Unicode) -> std::string (GBK)
	static string FromUnicode(const QString& qstr)
	
		QTextCodec* pCodec = QTextCodec::codecForName("gb2312");
		if(!pCodec) return "";	

		QByteArray arr = pCodec->fromUnicode(qstr);
		string cstr = arr.data();
		return cstr;
	

	// std::string (GBK) -> QString(Unicode)
	static QString ToUnicode(const string& cstr)
	
		QTextCodec* pCodec = QTextCodec::codecForName("gb2312");
		if(!pCodec) return "";

		QString qstr = pCodec->toUnicode(cstr.c_str(), cstr.length());
		return qstr;
	

;


#endif</span>

mainwidget.h

<span style="font-family:SimSun;font-size:18px;">#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include <QPixmap>
#include <QSystemTrayIcon>
#include <QPainter>
#include <QPoint>
#include <QMouseEvent>
#include <QMenu>
#include <QIcon>
#include <QMovie>
#include <QSound>

#include "GBK.h"
#include "rose.h"


namespace Ui 
class mainWidget;


class mainWidget : public QWidget

    Q_OBJECT

public:
    explicit mainWidget(QWidget *parent = 0);
    ~mainWidget();

    virtual void mouseMoveEvent(QMouseEvent *event);
    virtual void mousePressEvent(QMouseEvent *event);
    virtual void mouseReleaseEvent(QMouseEvent *event);

public slots:
    void OnExitBtn();	//隐藏程序,调用托盘
    void OnShowActive();	//托盘显示程序
    void SoundShow(const string filepath,bool loop);
    int OnSystemTrayClicked(QSystemTrayIcon::ActivationReason reason);
    int OnExitWindows();
    void OnClickHere(); // “点这里”相关处理



private:
    Ui::mainWidget *ui;

    void closeEvent(QCloseEvent *event);    //重写close按钮
    virtual void paintEvent(QPaintEvent *event);

    QPixmap m_MainWidgetImage;
    bool m_dragging;	//是否正在拖动
    QPoint m_startPosition; //拖动开始前的鼠标位置
    QPoint m_framePosition;	//窗体的原始位置

    QSystemTrayIcon m_systray;	//托盘图标

    Rose *rose;


;

#endif // MAINWIDGET_H</span>

rose.h

<span style="font-family:SimSun;font-size:18px;">#ifndef ROSE_H
#define ROSE_H

#include <QObject>
#include <QWidget>
#include <QLabel>
#include <QPixmap>
#include <QSize>
#include <QApplication>
#include <QDesktopWidget>
#include <QTimerEvent>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <QCloseEvent>


class Rose : public QWidget

    Q_OBJECT
public:
    explicit Rose(QWidget *parent = 0);
    void GetScreenInfo();   //获得屏幕分辨率
    void closeEvent(QCloseEvent *event);

    int Screen_x;   //屏幕x轴
    int Screen_y;   //屏幕y轴

signals:

public slots:

protected:
    void timerEvent(QTimerEvent *event);

private:
    virtual void paintEvent(QPaintEvent *event);

    QLabel *rose_1[20];
    QLabel *rose_2[5];
    QLabel *rose_3[5];
    QLabel *rose_4[5];
    QLabel *rose_5[5];

    int rand_x_rose_1[20][2];    //rose1 20个的玫瑰花坐标  第二个为玫瑰的速度
    int rand_x_rose_2[5][2];    //rose2 5个的玫瑰花坐标  第二个为玫瑰的速度
    int rand_x_rose_3[5][2];     //rose3 5个的玫瑰花坐标  第二个为玫瑰的速度
    int rand_x_rose_4[5][2];    //rose4 5个的玫瑰花坐标  第二个为玫瑰的速度
    int rand_x_rose_5[5][2];    //rose4 5个的玫瑰花坐标  第二个为玫瑰的速度


    int crood_y_rose_1[20];       //rose_1 的y坐标
    int crood_y_rose_2[5];      //rose_2 的y坐标
    int crood_y_rose_3[5];      //rose_3 的y坐标
    int crood_y_rose_4[5];      //rose_4 的y坐标
    int crood_y_rose_5[5];      //rose_5 的y坐标


    int RoseSpeed_Kind[10];      //玫瑰的10种不同的速度


;

#endif // ROSE_H</span>


以上是关于Qt实现全屏下玫瑰花(含详细注释)的主要内容,如果未能解决你的问题,请参考以下文章

qt5实现俄罗斯方块(详细注释)

Ros-Bot在全屏和4k屏下怎样兼容

Ros-Bot在全屏和4k屏下怎样兼容

C数据结构单链表接口函数逻辑解析与代码实现(含详细代码注释)

简单物联网应用——基于老人居家声音监测系统(全!含完整源码详细注释测试结果设计过程视频详细教程)

QT-图片浏览器(显示器)的实现(含登录界面)