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

做一个无法关闭的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-10 08:35:34

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

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

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

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

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

亲测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文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查

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架构就没有这种对齐要求.所以代码

Qt 程序退出时断言错误——_BLOCK_TYPE_IS_VALID(pHead-&gt;nBlockUse),由setAttribute(Qt::WA_DeleteOnClose)引起

最近在学习QT,自己仿写了一个简单的QT绘图程序,但是在退出时总是报错,断言错误: 报错主要问题在_BLOCK_TYPE_IS_VALID(pHead->nBlockUse),是在关闭窗口时报的错: 先前考虑是析构函数有问题,重写并且排查相关变量并未发现问题. 根据报错问题又推测栈调用出现内存溢出,寻找程序中所有的链表和栈调用.未果. 最后用了最笨的方法,将构造函数中所有变量挨个遍历,最终确定问题出在Qt的setAttribute(Qt::WA_DeleteOnClose)这行代码上. 网上查询

Qt程序在Windows上发布

最近写好了一个Qt5的小程序,并且已经配置好了所有的依赖库,需要发布. 这个主要是讲发布的 查找依赖库请看我的另一篇博客 Qt的程序在其他电脑上使用 http://blog.csdn.net/homechao/article/details/9113531 因为所有的文件比较大约70M左右,直接复制比较慢,也容易丢失文件 在网上看了很多使用第三方的软件进行打包,倒也是可以使用就是比较麻烦点 其实Windows上都已经有现成的打包软件啦,大家可能天天用,都没想到吧 那就是RAR,用起来非常简单,我

Qt程序启动画面播放(gif与swf两种动画格式)

学习Qt有一段时间了,发现一个小问题,网上关于Qt的资料或者总结性的学习及应用文章有点少. 比如,Qt完整的API,程序运行之前的启动画面如何按理想效果播放等,每次想在项目中添加一些应用的时候,总是找不到好的书籍或文章可以马上学习.上手. 今天,就把前段时间对启动画面播放的学习及尝试做一个小小的总结.如果对大家有所帮助,那自然好:如果有什么不足或有什么可以改进的地方,还望朋友们多给点意见及建议,谢谢! 过程很简单,只是建立了一个基于Qt控制台的项目,文件也只有一个——"main.cpp"

给QT程序升级的一种办法

远程无人值守的机器,需要升级的时候,如果需要替换主程序,可以先下载新的主程序(放到临时目录).确保下载的程序完整以后,将老程序替换成新程序.然后老程序(正在运行的程序)启动外部程序(一般是一个shell),注意在QT程序中启动另外一个shell的时候可以使用如下代码: QProcess* pro = new QProcess(); pro->startDetached(QDir::currentPath()+"/myShell.sh"); exit(0);//主程序kill自己