• 6298阅读
  • 6回复

巧妙的,最简单的,实现: 最小化到托盘  和   关闭到托盘  的例子 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-19
注意:以下的最小化到托盘依赖于关闭到托盘,虽然有点不常规,但代码是如此的简明...

//关闭到托盘---------
void Widget::closeEvent(QCloseEvent *e)
{
    e->ignore();      this->hide();
}


//最小化到托盘----
void Widget::changeEvent(QEvent *e)
{
    if((e->type()==QEvent::WindowStateChange)&&this->isMinimized())
    {
        QTimer::singleShot(100, this, SLOT(close()));
    }
}
离线banyibanyi

只看该作者 1楼 发表于: 2010-05-19
恩  挺好 学习一下 有机会试试
离线yangfanxing
只看该作者 2楼 发表于: 2010-05-19
Re:巧妙的,最简单的,实现: 最小化到托盘  和   关闭到托盘  的例子
这个跟“最小化到托盘”和“关闭到托盘”含义不符吧?
&恢复呢?
PHPWind好恶心。。。不想看这种界面。。。
离线iiiyyyhhhsss

只看该作者 3楼 发表于: 2010-05-19
Re:Re:巧妙的,最简单的,实现: 最小化到托盘  和   关闭到托盘  的例子
引用第2楼yangfanxing于2010-05-19 21:30发表的 Re:巧妙的,最简单的,实现: 最小化到托盘  和   关闭到托盘  的例子 :
这个跟“最小化到托盘”和“关闭到托盘”含义不符吧?
&恢复呢?


有什么不符呢?



我通常用以下方法激活:

激活信号槽...
QObject::connect(this->TrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(SlaClientClickTrayIcon(QSystemTrayIcon::ActivationReason)));

//托盘激活-------
void SlaClient::SlaClientClickTrayIcon(QSystemTrayIcon::ActivationReason reason)
{
    switch(reason){
    case QSystemTrayIcon::DoubleClick:this->show();this->setWindowState(Qt::WindowActive);            //show和窗体状态同时需要设置...
    default:;
    }
}
离线yoso
只看该作者 4楼 发表于: 2011-02-26
最小化到托盘,这样不也可以吗
void Widget::changeEvent(QEvent *e)
{
    if((e->type()==QEvent::WindowStateChange)&&this->isMinimized())
    {
           close();
    }
}

为什么要 QTimer::singleShot(100, this, SLOT(close())); 呢?
离线l20061642
只看该作者 5楼 发表于: 2011-12-08
如何快捷键恢复呢
离线roywillow

只看该作者 6楼 发表于: 2011-12-08
Re:巧妙的,最简单的,实现: 最小化到托盘  和   关闭到托盘  的例子
那个singleShot感觉说不太清楚,之前我实现的时候发现如果不用singleShot的话效果会很糟糕

那个最小化后到托盘用的是close()……?

不过我用hide()隐藏之后再show(),发现窗口是处在隐藏状态的,挺难处理的,所以说才用close()?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个