• Qt5.9.8在linux银河麒麟下关闭系统带的最大化最小化和关闭按键


    由于项目中有pjsip,需要退出软件时注销掉,所以自己写了退出和最小化的按键和槽函数,但是发现银河麒麟系统自带了最大化最小化和关闭按键,这样就导致了如果点击系统自带关闭时没有注销sip会影响下次使用

     MainWindow w;
    #ifdef COMPILE_KYLIN
        // 银河麒麟下关闭系统自带的最小化按键和关闭按键
        w.setMaximumSize(QSize(1920,1080));
        w.setMinimumSize(QSize(1920,1080));
        w.setWindowFlags(Qt::WindowCloseButtonHint);
    #endif
        w.show();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    前两句是固定整个窗口的大小,如果不固定窗口大小就直接设置w.setWindowFlags(Qt::WindowCloseButtonHint);
    让最大化和最小化按钮失去效用(加上上面两句,按钮不会消失,最大化按钮无效用,但是最小化按钮还是可以用的)
    Qt去掉最大化和最小化以及关闭按钮 :在MainWindow构造函数中调用this->setWindowFlags(Qt::Dialog|Qt::FramelessWindowHint);这样会把标题栏都去掉。

    /** 客户端关闭 */
    void MainWindow::on_btn_closed_clicked()
    {
        // 启动定时器
        closeTimer = new QTimer(this);
        connect(closeTimer, SIGNAL(timeout()), this, SLOT(windowsClose_timeout()));
        closeTimer->start(1000);
    
        // 显示关闭进度,弹出一个关闭的动画效果
        if(my_closetip)
            my_closetip->show();
    
        // 关闭所有窗口
        close_all();
        
        // 保存数据库
        dbBak_saveDb2File();
    }
    
    /** 客户端关闭定时器函数 */
    void MainWindow::windowsClose_timeout(void)
    {
        // 关闭定时器
        closeTimer->stop();
        
        // 线程退出
        m_initThread->quit();
        m_initThread->wait();
        m_initThread->deleteLater();
    
        // 注销SIP
        m_call->destroy();
        
        // 退出主程序
        QApplication* app;
        app->quit();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    上面是自己写的软件关闭按键的槽函数以及定时器函数,真正退出软件在最后两句

    // 退出主程序
        QApplication* app;
        app->quit();
    
    • 1
    • 2
    • 3

    自己写的客户端最小化的按键槽函数

    /** 客户端最小化 */
    void MainWindow::on_btn_minimum_clicked()
    {
        this->showMinimized();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    Parse [5/10/2020 7:05:04 PM] with format [yyyy-MM-dd] error!
    Dubbo面试题(二十八道)
    C语言指针进阶
    若依、多选框前后端处理,MyBatis处理多对多关系
    1.基于Springboot对SpringEvent初步封装
    深度学习笔记(四)——循环神经网络(Recurrent Neural Network, RNN)
    UE学习日记14(枪口出现火焰)
    【JavaEE进阶序列 | 从小白到工程师】JavaEE中的静态方法定义、方法重载要求、return作用详解
    学习基因富集工具DAVID(2)
    【python】算法与数据结构例题分析
  • 原文地址:https://blog.csdn.net/qq_40170041/article/details/126026986