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();

前两句是固定整个窗口的大小,如果不固定窗口大小就直接设置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();
}

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

// 退出主程序
    QApplication* app;
    app->quit();

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

/** 客户端最小化 */
void MainWindow::on_btn_minimum_clicked()
{
    this->showMinimized();
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值