无法关闭的QT程序(覆盖closeEvent,新建QProcess并脱离关系)

做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难,

其实它并不难,只要让程序在关闭时启动它自身就可以了。

上代码:

[cpp] view plaincopyprint?

  1. #include <QtGui>
  2. class Temp : public QWidget
  3. {
  4. Q_OBJECT
  5. private:
  6. QLabel *label;
  7. protected:
  8. void closeEvent(QCloseEvent *event);
  9. public:
  10. Temp(QWidget *parent = 0);
  11. ~Temp();
  12. };
  13. Temp::Temp(QWidget *parent)
  14. : QWidget(parent)
  15. {
  16. label = new QLabel("You can‘t close me, haha.", this);
  17. QVBoxLayout *layout = new QVBoxLayout;
  18. layout->addWidget(label);
  19. setLayout(layout);
  20. move(200, 200);
  21. }
  22. Temp::~Temp()
  23. {
  24. }
  25. void Temp::closeEvent(QCloseEvent *event)
  26. {
  27. //重载关系事件函数,使程序在关闭自己的同时重新打开自己
  28. QProcess *p = new QProcess(this);
  29. QString str = QApplication::applicationFilePath();
  30. p->startDetached(str);
  31. }
  32. #include "main.moc"
  33. int main(int argc, char *argv[])
  34. {
  35. QApplication app(argc, argv);
  36. Temp *temp = new Temp;
  37. temp->show();
  38. return app.exec();
  39. }

http://blog.csdn.net/small_qch/article/details/6704036

时间: 2024-10-12 17:28:50

无法关闭的QT程序(覆盖closeEvent,新建QProcess并脱离关系)的相关文章

无法关闭的QT程序——思路开阔一下,原来这么简单!

做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难, 其实它并不难,只要让程序在关闭时启动它自身就可以了. 上代码: [cpp] view plaincopyprint? #include <QtGui> class Temp : public QWidget { Q_OBJECT private: QLabel *label; protected: void closeEvent(QCloseEvent *event); public: Temp(QWidget *paren

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

VS2010 win7 QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序

https://www.cnblogs.com/rainbowzc/p/4689009.html 下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip, 不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们 所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当

设置Qt程序在Windows开机后自动运行

(转自:http://blog.csdn.net/weiren2006/article/details/7443362) 让软件在系统启动时自动运行,可通过修改注册表实现. 在\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中添加需启动的程序路径,代码如下: voidautoStart(boolflag){//写入注册表,开机自启动HKEYhKey;//找到系统的启动项LPCTSTRlpRun=(wchar_t*)

Ubuntu10.04下安装Qt4和创建第一个Qt程序

1.首先安装Qt4并采用Qt Creator进行开发演示 (1)在Terminal中输入: sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer 其中: qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator     qt4-doc 这个是帮助文档     qt4-qtconfig Qt的配置工具,这个装好默认好     qt4-demos

qtday01 ubuntu 下手动编写第一个qt程序

//qt 5.2.1 //1t目录下 //1t.cpp /* 第一个qt程序 */ #include <QApplication> #include<QtWidgets/QLabel> #include<QString> #include<QTextCodec> int main(int argc,char** argv){ /*构造一个对象*/ QApplication app(argc,argv); QTextCodec* coder=QTextCode

QT程序出现Bus Error问题的调试

原文 1.文档目的 本文档目的在于探究部分QT程序在嵌入式板子上出现BusError问题的调试及解决方法: 以数码相框程序出现的BusError为例: 2.原因分析 2.1产生BusError的可能原因: BusError即总线错误,BusError通常都是因为非对齐访问造成的.CPU在设计上为了性能上的考虑,要求待访问,操作的数据地址都要对齐.如果发现没有对齐的访问,就会向当前进程发出SIGBUS信号,使程序崩溃.RISC包括MIPS都是这种类型的芯片.而X86架构就没有这种对齐要求.所以代码

Linux下静态编译Qt程序

一般情况下,我们用Qt编译出来的程序是要依赖于系统Qt库的,也就是这个程序移到别的没有安装Qt库的系统上是不能使用的.会提示缺少……库文件之类的错误.这就是动态编译的结果. 但是如果我们想编译一个程序,这个程序在发给别人后,他们可以直接打开,而不需要特别地去先安装Qt库,那就需要采用静态编译了. 在Linux下如何静态编译Qt程序呢? 首先需要先安装静态编译的Qt,也就是静态编译Qt程序首先是需要一个静态编译安装的Qt   1.下载源安装程序,如 qt-x11-opensource-src-4.

QT程序制作deb包并安装在应用程序菜单

制作原理:打包:将QT制作的源程序(没有编译的)用debian压缩打包(这里是用脚本对源程序再编译)安装:将deb包中的源程序解压(默认解压到根目录)到规定系统文件中并编译(postinst脚本)卸载:将解压的所有文件删除(postrm脚本)例子:1.新建deb包文件myded|——mydeb     |————application           |——addressbook(此目录存放QT的源程序和configure脚本)           |————lib