/编辑:已解决,请参阅我在第一个答案中的评论!/
我目前正在构建一个仅显示托盘图标的应用程序,因此它没有任何窗口。
好吧,在托盘图标中,我包含了一个 QAction 以关闭应用程序。问题是,当我调用 exit(0); 时出现段错误;从那个函数。这是一些示例代码:
//I have a reason for setting it to be a QTimer, please don't even comment on this
class Boot_Timer : public QTimer {
Q_OBJECT
public:
explicit Boot_Timer(QObject *parent = 0) : QTimer(parent) {
}
public Q_SLOTS:
void set_up_command_line_tray(){
//Setting up the tray Icon.
QSystemTrayIcon *trayIcon_cmd = new QSystemTrayIcon(this);
trayIcon_cmd->setIcon(QIcon(":/icons/Pictures/myapp.png"));
trayIcon_cmd->setToolTip("My tray tooltipp");
QMenu *changer_menu = new QMenu;
QAction *Quit_action = new QAction(tr("&Quit"), this);
Quit_action->setIconVisibleInMenu(true);;
connect(Quit_action, SIGNAL(triggered()), this, SLOT(close_application()));
changer_menu->addAction(Quit_action);
trayIcon_cmd->setContextMenu(changer_menu);
trayIcon_cmd->show();
}
void close_application(){
//HERE I GET SEG FAULT
exit(0);
}
};
Boot_Timer boottimer;
#include "main.moc"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
//making some checks (code omitted)
...
boottimer.set_up_command_line_tray()
return app.exec();
}
因此,托盘图标显示正常且完美,但是当我使用添加到托盘图标的菜单选择退出应用程序时,出现段错误。我想我无法在 main() 函数及其没有父函数的函数之外使用 exit(int state) 退出应用程序......
那么,退出我的申请的正确方法是什么?
提前感谢您的任何答案!