精华内容
下载资源
问答
  • QT 窗口关闭 程序进程不退出

    千次阅读 2018-02-12 18:37:35
    QT程序窗口关闭程序退出只需设置QApplication::setQuitOnLastWindowClosed(false);

    QT程序,窗口关闭,程序不退出

    只需设置


    QApplication::setQuitOnLastWindowClosed(false);

    展开全文
  • 最近在做一个工具用于控制mcu,这其中肯定就需要open端口,所以不能同时打开一个设备,所以在发布程序后,打开设备后关闭QT的UI界面,再次打开程序进行连接设备的时候出现open设备失败的问题。 第一次打开设备: ...

        最近在做一个工具用于控制mcu,这其中肯定就需要open端口,所以不能同时打开一个设备,所以在发布程序后,打开设备后关闭QT的UI界面,再次打开程序进行连接设备的时候出现open设备失败的问题。

    第一次打开设备:

        关闭应用再次连接设备:

     

        后面查看了问题,是因为关闭UI界面后并没有退出进程,在后台它依然是运行着的。所以就尝试了很多方法,比如网上各种强制关闭进程的方法依然不行。

    关闭应用后,后台其实依然运行着程序:

        后来找到原因是因为进程退出的时候销毁线程的顺序出了问题。

        如下,我先等待线程退出才销毁线程,但是此时线程处于死循环状态。怎么会退出,导致了线程无法销毁的情况。

    因此需要先delete线程,然后在等待退出等操作。

     

    展开全文
  • QT关闭程序窗口 但是从任务管理器看该进程还是存在。 是因为程序中存在死循环或者程序为多线程程序,且在窗体关闭后,仍有线程在工作。 修改:将whle(1)改成 while (this.Visible)。 这样窗口关闭程序就不会一直在...

    QT关闭程序窗口 但是从任务管理器看该进程还是存在。
    是因为程序中存在死循环或者程序为多线程程序,且在窗体关闭后,仍有线程在工作。
    修改:将whle(1)改成 while (this.Visible)。
    这样窗口关闭程序就不会一直在循环中跑了。
    修改地方:主窗口闪烁以及线程中事件循环处都要修改

    展开全文
  • 一、描述 为避免错点关闭按钮,使得软件关闭退出。需要开发一种类似于QQ桌面...1、需要对应用软件程序窗口关闭按钮进行事件拦截,然后重载,用到QT的QDesktopServices类。 2、要使程序进入托盘,需要用到QT的QSy...

    一、描述

    为避免错点关闭按钮,使得软件关闭退出。需要开发一种类似于QQ桌面之类的功能,点击关闭按钮并不退出,开发的应用程序在用户鼠标点击右上角的关闭按钮时,程序不退出,缩小到右下角,进入托盘。例如win10右下角的图标。

     

    二、思路

    1、需要对应用软件程序窗口的关闭按钮进行事件拦截,然后重载,用到QT的QDesktopServices类。

    2、要使程序进入托盘,需要用到QT的QSystemTrayIcon类。

     

    三、方法

    1、添加头文件和成员

        mainwindow.h 头文件中添加:
        #include <QSystemTrayIcon>  //t托盘类
        #include <QDesktopServices> //桌面事件类
        private: 
            QMenu *trayMenu;//托盘菜单
            QSystemTrayIcon *tray;//托盘图标添加成员

    2、构造函数初始化  

        //***托盘***
        tray= new QSystemTrayIcon(this);//初始化托盘对象tray
        tray->setIcon(QIcon(QPixmap(":/image/image/icon_48px.png")));//设定托盘图标,引号内是自定义的png图片路径
        tray->setToolTip("My helper"); //提示文字
        QString title="APP Message";
        QString text="My helper start up";
        tray->show();//让托盘图标显示在系统托盘上
        tray->showMessage(title,text,QSystemTrayIcon::Information,3000); //最后一个参数为提示时长,默认10000,即10s
    
    
        //创建菜单项动作
        minimizeAction = new QAction("MinWin", this);
        connect(minimizeAction, SIGNAL(triggered()), this, SLOT(hide())); 
        maximizeAction = new QAction("MaxWin", this);
        connect(maximizeAction, SIGNAL(triggered()), this, SLOT(showMaximized()))
        restoreAction = new QAction("restore", this);
        connect(restoreAction, SIGNAL(triggered()), this, SLOT(showNormal()));
        quitAction = new QAction("exit", this);
    
        connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); //关闭应用
    
        //创建托盘菜单
        trayMenu = new QMenu(this);
        trayMenu->addAction(minimizeAction);
        trayMenu->addAction(maximizeAction);
        trayMenu->addAction(restoreAction);
        trayMenu->addSeparator();
        trayMenu->addAction(quitAction);
        tray->setContextMenu(trayMenu);
    
     connect(tray,SIGNAL(activated(QSystemTrayIcon::ActivationReason)),this,SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));

    3、添加槽函数  

    void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason ireason)
    {
        switch (ireason)
        {
        case QSystemTrayIcon::Trigger:
            this->showNormal();
            break;
        case QSystemTrayIcon::DoubleClick:
            this->showNormal();
            break;
        case QSystemTrayIcon::MiddleClick:
            break;
        default:
            break;
        }
    }

    4、拦截桌面窗口事件

    void MainWindow::closeEvent(QCloseEvent *event)
    {
        if(tray->isVisible())
        {
            hide(); //隐藏窗口
            event->ignore(); //忽略事件
        }
    }
    void MainWindow::hideEvent(QHideEvent *event)
    {
        if(tray->isVisible())
        {
            hide(); //隐藏窗口
            event->ignore(); //忽略事件
        }
    }

     

    展开全文
  • 在默认的情况下,应用程序会在最后一个可见的窗口退出时,退出整个程序。 详情请查阅帮助文档: setQuitOnLastWindowClosed() 解决办法: 重写子窗口的closeEvent槽函数,在槽函数里发送自定义信号通知主窗口,主...
  • Qt关闭窗口

    千次阅读 2018-03-27 22:23:24
    Qt关闭窗口命令: A. 关闭主窗口并退出程序是 QApplication::exit() B. 关闭一个QDialog,就accept() 或 reject() C. 关闭QWidget:close()
  • 项目中当关闭窗口时,需要将同时打开的其他窗口关闭,并退出应用程序,实现方法如下: 在main函数中将QApplication::lastWindowClosed()信号和QApplication::quit()槽函数相关联,将主窗口的属性设置为QWidget:...
  • 项目中当关闭窗口时,需要将同时打开的其他窗口关闭,并退出应用程序,实现方法如下: 在main函数中将QApplication::lastWindowClosed()信号和QApplication::quit()槽函数相关联,将主窗口的属性设置为QWidget:.....
  • 我们项目使用了Qgis,并且是android版的。要说Android还是非常好用的,不过总感觉Qt在...首先是程序的主窗口(命名为W0),点击某一个按钮打开一个窗口MainWindow (命名为W1),W1 上面有个按钮点击后 再打开一个窗口
  • QT编写的程序,怎样在申请资源失败后,关闭所有窗口退出程序? 我写的一个QT窗口,以一个对话框为...
  • Qt界面关闭窗口,若其Qdialog弹框没有关闭程序无法退出 需要在主窗口设置属性:Qt::WA_QuitOnClose 将主窗口属性设置为: fm.setAttribute(Qt::WA_QuitOnClose,true); Qt::WA_QuitOnClose属性是使窗口如果是...
  • Qt5 完全退出程序

    万次阅读 2018-01-09 15:09:03
    Qt程序我们常用的是使用 this->close(); 来关闭窗口,此时的程序并没有完全退出。我的理解是 main 函数中的 a.exec(); 还在响应。 若要完全退出程序,需要调用: qApp->quit(); 或者: qApp->exit(0);
  • QT窗口退出

    千次阅读 2017-12-20 21:16:34
    1.关闭窗口退出程序是 QApplication::exit()  2.如果是QDialog  ::accept() 或 reject()  3.对于所有QWidget  ::close()
  • QtQt窗口程序

    2021-03-22 14:50:52
    程序要实现的功能是:运行开始出现一个对话框,按下登录主界面按钮后该对话框消失并进入主窗口,如果直接关闭这个对话框,便不能进入主窗口,整个程序也将退出。进入主窗口后,按下显示对话框按钮,会弹出一个对话框...
  • 重写窗口的closeEvent()事件 在事件中忽略原关闭事件#include <QtWidgets/QMainWindow>> #include <QCloseEvent> class App1 : public QMainWindow { Q_OBJECT public: App1(QWidget* parent = ...
  • 当我设置成自动登录后,然后再关掉界面,进程不退出窗口的析构没有执行)。不是自动登录没事。我新定义了一个信号,用来触发登陆按钮的click()信号,当检测到自动登录被选中后,触发信号。问题出在什么地方?
  • 写了一个简单的后台程序,发现一个问题,在没有顶层窗口或者隐藏主窗口后,如果有子窗口弹出如QMessageBox::information等,若关闭该弹出的子窗口,就会导致主窗口也被关闭。 解决方法: 设置主程序的属性 ...
  • QT关闭应用程序窗口的函数

    千次阅读 2013-08-16 16:14:55
    QT关闭应用程序和窗口的函数 使用QT编辑界面,其中带来很大方便的一点就是Qt中自带丰富的、... 首先说明窗口退出时,系统提示对话框的代码编辑。对主程序的退出,可以调用成员函数exit(),同时也可以调用槽qui
  • QDialog类下有一个虚函数 ...通过实现closeEvent函数,就可以以对关闭窗口消息进行拦截,比如程序还没有完成工作时,可以弹出警告窗口,即使用户确认退出操作 在头文件中,需要加入#include <QCloseEvent>...
  • 当我们在跑非常耗时的多线程任务时,如果用户点击了关闭窗口按钮,此时不处理的话,它虽然关闭了主窗口,但是程序其实会一直在跑的,还没有真正退出的,在任务管理器里还可以看到它,而且在debug窗口也会看到还在...
  • 在一次编写Qt程序时,我需要在窗口的构造函数中进行条件的判断,当符合条件时,继续运行,不符合时便退出程序,不让窗口显示。 我最初采用的是this->hide()/this->close(),但是我发现在构造函数中调用这两个...
  • GUI程序是一个窗体,在终端里用命令行启动,指令形如xxxx -qws,然后点击小叉关闭窗体,窗体消失,但终端里的命令行指令并不返回,用ps查看发现进程没有退出。而相同的代码使用pc上的qt库编译,在pc上是可以正常关闭...

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 139
精华内容 55
关键字:

qt关闭窗口退出程序