赞
踩
由于项目中有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();
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。