• 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
  • 相关阅读:
    【比特熊故事汇】6月MVP英雄故事|技术实践碰撞境界思维
    【Latex】使用技能站:(三)使用 Vscode 配置 LaTeX
    Kafka基本架构
    读书笔记:《权力之治:人工智能时代的算法规制》
    与创新者同行,Doris Summit Asia 2023 线下技术峰会圆满落幕!
    【Kubernetes】K8s笔记(十一):Ingress 集群进出流量总管
    前端经典布局
    Linux运行jmeter报错java.sql.SQLException:Cannot create PoolableConnectionFactory
    英语连词总结
    Python中的 if __name__ ==‘main‘
  • 原文地址:https://blog.csdn.net/qq_40170041/article/details/126026986