• 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
  • 相关阅读:
    前端面试:webpack整理
    Spire.PDF 8.11.10 supports .NET 7.0 and PDF to PPTX
    神经元网络技术有限公司,神经网络网站
    VMware中Ubuntu(Linux)无法连接网络解决办法记录
    aardio 调用 vs 编写的dll (cdecl方式和stdcall方式)
    Alertmanager
    vscode 搜索界面的files to include files to exclude 是什么功能?
    【python基础】字典详解:如何定义、修改、遍历字典、字典中嵌套字典、列表等
    应用计量经济学问题~
    让直播和视频通话更精彩的实时换脸神器: 亲妈都未必认识
  • 原文地址:https://blog.csdn.net/qq_40170041/article/details/126026986