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

时间:2022-08-26 14:01:02

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

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

上代码:

  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