当前位置:   article > 正文

Qt5.9.8在linux银河麒麟下关闭系统带的最大化最小化和关闭按键_麒麟系统qt qwidget去掉最大化

麒麟系统qt qwidget去掉最大化

由于项目中有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
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/95018
推荐阅读
相关标签
  

闽ICP备14008679号