做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难,
其实它并不难,只要让程序在关闭时启动它自身就可以了。
上代码:
main.cpp
1 2 3 4 5 6 7 8 9 10 11 |
#include "temp.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); Temp temp; temp.show(); return a.exec(); } |
temp.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#ifndef TEMP_H #define TEMP_H #include <QWidget> #include <QLabel> class Temp : public QWidget { Q_OBJECT private: QLabel *label; protected: void closeEvent(QCloseEvent *event); public: Temp(QWidget *parent = 0); ~Temp(); }; #endif // TEMP_H |
temp.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include "temp.h" #include <QVBoxLayout> #include <QProcess> #include <QApplication> Temp::Temp(QWidget *parent) : QWidget(parent) { label = new QLabel("You can't close me, haha.", this); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(label); setLayout(layout); move(200, 200); } Temp::~Temp() { } void Temp::closeEvent(QCloseEvent *event) { //重载关系事件函数,使程序在关闭自己的同时重新打开自己 QProcess *p = new QProcess(this); QString str = QApplication::applicationFilePath(); p->startDetached(str); } |
发表评论
要发表评论,您必须先登录。