无法关闭的QT程序(覆盖closeEvent,新建QProcess并脱离关系)
2015-10-01 17:26
405 查看
做一个无法关闭的QT程序(想关闭时要在任务管理器里关闭),看似很难,
其实它并不难,只要让程序在关闭时启动它自身就可以了。
上代码:
[cpp] view plaincopyprint?
#include <QtGui>
class Temp : public QWidget
{
Q_OBJECT
private:
QLabel *label;
protected:
void closeEvent(QCloseEvent *event);
public:
Temp(QWidget *parent = 0);
~Temp();
};
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);
}
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Temp *temp = new Temp;
temp->show();
return app.exec();
}
/article/2021937.html
其实它并不难,只要让程序在关闭时启动它自身就可以了。
上代码:
[cpp] view plaincopyprint?
#include <QtGui>
class Temp : public QWidget
{
Q_OBJECT
private:
QLabel *label;
protected:
void closeEvent(QCloseEvent *event);
public:
Temp(QWidget *parent = 0);
~Temp();
};
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);
}
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Temp *temp = new Temp;
temp->show();
return app.exec();
}
/article/2021937.html
相关文章推荐
- QT:不规则窗口的实现
- Qt源码分析之信号和槽机制
- QT程序制作deb包并安装在应用程序菜单
- Qt全局热键(windows篇)(使用RegisterHotKey和句柄进行注册)
- Qt中 QString 和int, char等的“相互”转换,关键是QString.toLocal8Bit().data();
- QT中异形窗口的绘制(winEvent处理WM_NCHITTEST消息)
- Qt学习之路【4】:qmake:syntax expecting ")")
- ZetCode PyQt4 tutorial First programs
- QT 停靠窗简单使用
- 【QT5学习历程】
- qt delegate drawDisplay()
- qt delegate委托 paint()方法
- qt delegate createEditor()方法
- qt delegate setEditorData()
- qt delegate代理 setModelData()方法
- qt 委托 paint() 显示数据
- qt QItemDelegate 委托 相关函数
- qt 委托 delegate
- qt model 中的角色 role Qt::CheckStateRole角色
- qt 代理模型 proxy model QSortFilterProxyModel