尚经起名网

您现在的位置是:首页 >

企业资讯

快手怎样刷赞秒刷 - 快手双击秒刷墨言最优惠,快手怎么刷赞用什么软件下载

时间:2024-05-21 20:37 评论
作为Qt初学者,最近在编写窗口最小化到托盘功能代码的时候遇到了点阻碍。所以自己对比了Qt的demo和网上的文章,自己写了个简单的最小化到系统托盘的功能。先看一下代码的实现功能:空白窗口,关闭叉叉不会关闭窗口,而是最小化到托盘系统托盘,单击恢复隐藏窗口系统托盘,右击出现菜单,菜单有两个选项:恢复窗口、关闭程序...

自助下单地址(拼多多砍价,ks/qq/dy赞等业务):点我进入

作为一个Qt初学者,最近在写窗口最小化到托盘的功能代码时遇到了一些障碍。

Qt自带的demo实现的功能过于繁琐,涉及的知识点过于复杂,很难梳理出核心思想。 网上的文章代码也很多都是​​这个demo出来的,评论太少了。

于是我对照网上的Qt的demo,写了一个简单的最小化到系统托盘的功能。

skype最小化到托盘_qt 最小化到托盘_易语言最小化到托盘

先看代码的实现函数:

1.空白窗口qt 最小化到托盘,关闭fork不会关闭窗口qt 最小化到托盘,而是最小化到托盘

skype最小化到托盘_易语言最小化到托盘_qt 最小化到托盘

2.系统托盘,点击恢复隐藏窗口

3.在系统托盘,右键显示菜单,菜单有两个选项:恢复窗口,关闭程序

再看源码(由于功能简单,很多模块函数没有单独写,直接写在初始化函数中)

头文件 mwin.h

#ifndef MWIN_H
#define MWIN_H
 
#include 
#include 
 
class MWin : public QWidget
{
    Q_OBJECT
public:
    explicit MWin(QWidget *parent = 0);
    void init();//初始化函数
 
    QSystemTrayIcon *tray;//托盘图标
    QMenu *menu;//托盘菜单
    QAction *reset;//菜单实现功能:恢复窗口
    QAction *quit;//菜单实现功能:退出程序
 
protected:
    void closeEvent(QCloseEvent *event);//由于要关闭窗口变为隐藏至托盘图标,所以要重写close事件
 
signals:
 
public slots:
void TrayIconAction(QSystemTrayIcon::ActivationReason reason);//对托盘图标操作的槽:本代码实现单机图标恢复窗口功能
};
 
#endif // MWIN_H

解释文件 mwin.cpp

qt 最小化到托盘_易语言最小化到托盘_skype最小化到托盘

#include "mwin.h"
MWin::MWin( QWidget *parent ) :
	QWidget( parent )
{
	init(); /* 初始化 */
}
void MWin::init()
{
	/****主窗口****/
	this->setFixedSize( 200, 200 );
	this->setWindowTitle( "托盘APP" );
	/****托盘*** */
	tray = new QSystemTrayIcon( this );                                                                                                                     /* 初始化托盘对象tray */
	tray->setIcon( QIcon( QPixmap( ":/image/ico.png" ) ) );                                                                                                 /* 设定托盘图标,引号内是自定义的png图片路径 */
	tray->show();                                                                                                                                           /* 让托盘图标显示在系统托盘上 */
	QObject::connect( tray, SIGNAL( activated( QSystemTrayIcon::ActivationReason ) ), this, SLOT( TrayIconAction( QSystemTrayIcon::ActivationReason ) ) );  /* 连接信号与槽,实现单击图标恢复窗口的功能,槽是自定义的槽 */
	/****初始化托盘菜单及功能****/
	menu	= new QMenu( this );                                                                                                                            /* 初始化菜单 */
	reset	= new QAction( this );                                                                                                                          /* 初始化恢复窗口 */
	reset->setText( "显示窗口" );
	QObject::connect( reset, SIGNAL( triggered() ), this, SLOT( showNormal() ) );                                                                           /* 菜单中的显示窗口,单击连接显示窗口 */
	quit = new QAction( this );                                                                                                                             /* 初始化退出程序 */
	quit->setText( "退出程序" );
	QObject::connect( quit, SIGNAL( triggered() ), qApp, SLOT( quit() ) );                                                                                  /* 菜单中的退出程序,单击连接退出 */
	
	/*
	 * qApp,是Qt自带的demo中的知识点,查了一下文档,qApp是Qt中所有app的指针,关闭它就可以关闭当前的程序
     * 之所以不用this,close(),是由于软件要求关闭改为最小化到托盘,所以close()的功能已经不再是关闭窗口的功能,所以要另寻方法
     * 将定义好的菜单加入托盘的菜单模块中
	 */
	 tray->setContextMenu( menu );
	 menu->addAction( reset );
	 menu->addAction( quit );
}
/* ***重置关闭close()*** */
void MWin::closeEvent( QCloseEvent *event )
{
	hide();                 /* 隐藏窗口 */
	event->ignore();        /* 忽略关闭事件 */
}
/*
 * 因为实现的是关闭窗口至系统托盘,所以我们先将窗口hide()隐藏,再忽略关闭窗口功能event->ignore()即可。
 * ***托盘图标槽***
 */
void MWin::TrayIconAction( QSystemTrayIcon::ActivationReason reason )
/* 参数是Qt的保留字,表示对托盘图标的操作,该槽函数功能只实现了单击功能,可以实现其他功能比如双击、中击,具体可查文档或者Qt自带demo(关键字tray) */
{
	if ( reason == QSystemTrayIcon::Trigger )
		this->showNormal();  /* 如果对图标进行单击,则显示正常大小的窗口 */
}

main函数调用test main.cpp


#include 
#include "mwin.h"
 
int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
//***三行编码设置,保证中文字符***
//本机电脑是UTF-8编码,其他电脑自行调试修改编码
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
 
    MWin *win=new MWin();
 
    win->show();
 
    return app.exec();
}