我想在Qt中创建一个控制台应用程序,它处理控制台窗口的Close,Minimize和Maximize按钮。我的目标是在应用程序退出之前显示一些消息 - 即单击“关闭”按钮。
此外,我希望将应用程序最小化到系统托盘而不是任务栏。但是,当用户点击其中一个系统按钮时,似乎没有信号或事件可以处理。
甚至可能吗?
答案 0 :(得分:1)
我认为你不能通过Qt提供的API处理这些“信号”(最小化,最大化和关闭运行QCoreApplication的终端窗口)。
但是QCoreApplication会发送一个名为aboutToQuit()的信号。可能你可以用它来做你想做的事情(例如在终端上写),只是不知道用户是否能够及时阅读。
关于最小化托盘的应用程序:同样,可能无法在使用Qt API的终端应用程序中执行此操作。但是在QApplication(有一个窗口)中它是完全可能的。请参阅this answer类似的问题。
答案 1 :(得分:0)
您使用的是Unix / Linux还是Windows? 如果您使用的是Unix或Linux,您可能需要查看Posix / Unix信号。 他们没有提供最大化/最小化按钮的任何解决方案, 但是当你按下关闭按钮时,它们可以让你至少捕获系统信号。根据我的经验,aboutToQuit()信号不如信号处理程序的自定义覆盖快。
一旦你发现了信号,你就可以自己处理它。
以下是自定义信号处理程序的一个很好的教程:
答案 2 :(得分:0)
您可以在Linux和Windows中使用POSIX信号 #include
void quit_handle( int ) {
qApp->quit();
}
int main( int argc, char *argv[] ) {
QCoreApplication a(argc, argv);
...
signal( SIGINT, quit_handle );
return a.exec();
}
我只在Windows + MinGW中测试过,但我认为它也适用于Linux