找回密码
 立即注册
收起左侧

关闭事件的修改遇到的问题

6
回复
9215
查看
[复制链接]
累计签到:87 天
连续签到:1 天
来源: 2013-5-25 00:12:47 显示全部楼层 |阅读模式
1Qter豆
想重写关闭事件。添加几个按钮。最小化那个按钮,按了,会最小化,并且托盘出现软件图标。结果点了之后右下角的图标会出来闪一下,然后关闭,啥毛病。求指点!!

void MainWindow::closeEvent(QCloseEvent *event){    QMainWindow::closeEvent(event);    switch( QMessageBox::information( this, tr("实时监测程序"),  tr("真的要离开吗?"),  tr("是的"), tr("否"),tr("最小化"),  0,  2 )) {    case 0:  event->accept();        break;    case 1: default:      event->ignore();        break; case 2:        trayIcon->show();        hide();        break;    }}

最佳答案

查看完整内容

QMainWindow::closeEvent(event);这句话可以不要。 还有就是你说的这个问题,我以前也遇到过,要设置个地方,要不我给你个例子……
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2013-5-25 00:12:48 显示全部楼层
QMainWindow::closeEvent(event);这句话可以不要。
还有就是你说的这个问题,我以前也遇到过,要设置个地方,要不我给你个例子……
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2013-5-25 00:33:01 显示全部楼层
格式好奇怪,重写贴遍
void MainWindow::closeEvent(QCloseEvent *event)
{
    QMainWindow::closeEvent(event);
    switch( QMessageBox::information( this, tr("实时监测程序"),
  tr("真的要离开吗?"),
  tr("是的"), tr("否"),tr("最小化"),
  0,
  2 ))
{
    case 0:
  event->accept();
        break;
    case 1:
default:
      event->ignore();
        break;
case 2:
        trayIcon->show();
        hide();
        break;
    }
}
回复

使用道具 举报

尚未签到

2013-5-25 02:03:50 显示全部楼层
switch case default基本语法就错了
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2013-5-25 11:30:08 显示全部楼层
void MainFrame::closeEvent(QCloseEvent *event)
{
        int r = QMessageBox::warning(
                        this,
                        tr("警告"),
                        tr("你确定要退出程序?\t"),
                        QMessageBox::Ok|QMessageBox::No
                );
        if(r == QMessageBox::Ok)
        {
                trayIcon->hide();
                event->accept();//程序接受退出
        }
               
        if(r == QMessageBox::No)
                event->ignore();//程序拒绝退出
}
void MainFrame::changeEvent(QEvent *e)
{
        trayIcon->showMessage(tr("赵彦博"),
                        tr("最小化到这里"),
                        QSystemTrayIcon::Information,
                        1000
                );
        if(e->type()==QEvent::WindowStateChange)
        {
                if(windowState() == Qt::WindowMinimized)
                {
                        QTimer::singleShot(1000, this, SLOT(hide()));
                        trayIcon->show();
                }
        }
}

void MainFrame::showMainFrame(QSystemTrayIcon::ActivationReason reason)
{
    switch(reason)
    {
    case QSystemTrayIcon::Trigger:
    case QSystemTrayIcon::DoubleClick:
    case QSystemTrayIcon::MiddleClick:
            setWindowState(Qt::WindowNoState);
            show();
            break;
    }
}
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2013-5-26 21:09:53 显示全部楼层
a408815041 发表于 2013-5-25 11:30
void MainFrame::closeEvent(QCloseEvent *event)
{
        int r = QMessageBox::warning(

有个新问题就是 case QSystemTrayIcon::DoubleClick:这个事件经常触发不了,中键和单击都OK

点评

不会吧,我的一直可以  发表于 2013-5-27 09:12
回复

使用道具 举报

累计签到:87 天
连续签到:1 天
2013-5-28 00:24:10 显示全部楼层
真心不行,影响DoubleClick的语句是不是没放全?为啥双击就识别不到呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了