问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

QT如何获取最小化事件

发布网友 发布时间:2022-04-25 05:25

我来回答

2个回答

热心网友 时间:2022-05-03 04:00

功能:窗口最小化后或者点击“hide”按钮将窗口隐藏到托盘。
通常最小化的窗口会在任务栏上显示一个按钮。当用户按一下这个按钮,窗口就还原了。这是一个被大多数桌面环境,比如Windows,KDE,GNOME所采用的普遍设计。不过,因为任务栏通常只是桌面边上一小行,容纳不了很多按钮,用户通常希望把那些不常用的程序隐藏起来,只在通知栏显示一个小图标,要使用的时候再点击那个小图标恢复窗口。这种作法最典型的例子是QQ和Winamp。
最基本的思路是拦截窗口的最小化事件changeEvent(),通过重写changeEvent()即可。

“hide”按钮的方式,是通过信号--槽来实现。
--------------------------------------------------------------------
void TrayMenu::createActions()
{
//创建托盘项
action_show = new QAction(this);
action_quit = new QAction(this);
action_login_home = new QAction(this);
action_help = new QAction(this);
action_about = new QAction(this);
action_check_update = new QAction(this);
action_setting = new QAction(this);

//设置托盘项图标
action_show->setIcon(QIcon(":/icon/open"));
action_login_home->setIcon(QIcon(":/icon/home"));
action_help->setIcon(QIcon(":/icon/help"));
action_about->setIcon(QIcon(":/icon/about"));
action_check_update->setIcon(QIcon(":/icon/update"));
action_setting->setIcon(QIcon(":/icon/set"));
action_quit->setIcon(QIcon(":/icon/quit"));
//加载图片和提示
QIcon icon(":/images/sysTray.png");
systemTray = new QSystemTrayIcon(this);
systemTray->setIcon(icon);
systemTray->setToolTip("Hello, this is system tray!");

注意:这里特别提醒,如果你的应用程序要移植到别的机器上,而且这个机器没有装Qt,QIcon的图片格式最好用png,而不要用ico等格式,否则托盘图标不能显示,会很麻烦。

//设置托盘想文本
action_show->setText(QString("显示"));
action_quit->setText(QString("退出"));
action_login_home->setText(QString("登录网页"));
action_help->setText(QString("帮助"));
action_about->setText(QString("关于"));
action_check_update->setText(QString("检查更新"));
action_setting->setText(QString("设置"));

//添加菜单项
this->addAction(action_show);
this->addAction(action_setting);
this->addAction(action_login_home);
this->addSeparator();
this->addAction(action_help);
this->addAction(action_about);
this->addAction(action_check_update);
this->addSeparator();
this->addAction(action_quit);
action_setting->setVisible(false);

//设置信号连接(这里仅列举连接显示窗口的信号)
QObject::connect(action_show, SIGNAL(triggered(bool)), this, SIGNAL(showWidget()));
}

LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent)
{
QSystemTrayIcon *system_tray = new QSystemTrayIcon();
//放在托盘提示信息、托盘图标
system_tray ->setToolTip(QString("我就是托盘"));
system_tray ->setIcon(QIcon(":/icon/login"));
TrayMenu *tray_menu = new TrayMenu();
system_tray->setContextMenu(tray_menu);
//点击托盘执行的事件
connect(system_tray , SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(iconIsActived(QSystemTrayIcon::ActivationReason)));
connect(tray_menu, SIGNAL(showWidget()), this, SLOT(showNormal()));
//显示托盘
system_tray->show();
//托盘显示提示信息
system_tray->showMessage(QString("托盘标题"), QString("托盘显示内容"));
}

void LoginDialog::iconIsActived(QSystemTrayIcon::ActivationReason reason)
{
switch(reason)
{
//点击托盘显示窗口
case QSystemTrayIcon::Trigger:
{
showNormal();
break;
}
//双击托盘显示窗口
case QSystemTrayIcon::DoubleClick:
{
showNormal();
break;
}
default:
break;
}
}

OK,这样我们的托盘功能就Over了!
=============================================================================
另://关闭到托盘
void Widget::closeEvent(QCloseEvent *e)
{
e->ignore();
this->hide();
}

热心网友 时间:2022-05-03 05:18

this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint);
第一个参数是设置无边框。第二个参数是允许任务栏按钮右键菜单,第三个参数是允许最小化与还原。
嗯,这样舒服多了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
这是真的黑米还是假的? 牡丹江市区好玩的地方 显卡问题,现在的显卡显存一般都为多少? 现在主流显存是多少?512M5年后会过时吗 主流家用电脑配置家用电脑买什么样配置比较好 现在的电脑显存一般是多少? 安顺万家领秀城怎么样?好不好?值不值得买? 请问下面一道题怎么加标点 花园里 牡丹 月季 玫瑰 芍药 开得美丽极了... 是什么把大地打扮的这么漂亮呢 是雪呀 这两句话怎么写标点符号? 通州有那些私立高中啊 各位大神,我在做一个qt的项目,里面要用到布局的问题,在程序中,在widget动态的添加小的widget 关于Qt程序图标的一个小问题。。。急求,谢谢各位! 如何同时打开两个QT工程?我需要分别编译两个工程~ 请教大神 用qt写两个小程序 初学者学习Qt有哪些好的书籍? qt c++的问题请教下,关于类的继承不太懂? 使用Qt如何编写模块化插件式应用程序 想学用QT项目做个简单的程序 如何学习Qt Linux下Qt编程有前途吗?? Qt是什么? 电脑版微信自动退出登录怎么回事 没有设置微信同步电脑,为什么还是会自动同步 电脑微信一登录电脑就自动关机重启怎么回事? OPPO手机电池寿命问题 oppo电池续航怎么样 如何巧妙利用QQ中的远程协助控制别人的电脑? 键盘的八个基本键位多少? 键盘上的基本键有几个? 键盘的8个基本键是A、( )、D、()、()、H、J、K、L。 qt如何学好 我在用QT编程上逻辑遇到点困难,恳求熟悉算法的给点提示! 风寒感冒咳嗽有何偏方 宝宝风寒感冒偏方 风寒感冒咳嗽吃什么小偏方能好? 小孩子风寒感冒咳嗽? 风寒感冒咳嗽怎么办? 风寒感冒咳嗽怎么办啊?? 风寒感冒引起的咳嗽,干咳 风寒感冒的症状? 微信解封我的手机号已经达到上限不能用了怎么办? 深圳短视频拍摄有哪些机构? 深圳短视频拍摄选择什么机构好一些? 深圳短视频拍摄什么机构好? 深圳想学视频剪辑该去哪里? 深圳有没有靠谱的短视频学习地,短视频运营难学吗? 深圳短视频拍摄选择什么机构好? 我想学习影视后期制作,主要培训一下软件比如AE PR 这些,深圳哪家机构好? 手机号登录达到上限怎么办 老鼠怎么爬上高楼的