我正在尝试在最小化我的窗口后显示我的应用程序的任务栏图标。我的窗口可以通过 show()或 showFullScreen()显示,因此我的隐藏窗口代码是:
w.setWindowFlags(w.windowFlags() | Qt::WindowStaysOnTopHint);
我也试过
w.setWindowFlags(w.windowFlags() | Qt::WindowStaysOnTopHint | Qt::Tool | etc);
但仍然相同:应用程序已最小化,但任务栏上没有图标。
从here我了解到 setWindowFlags :
注意:此函数在更改窗口的标志时调用setParent(),从而导致隐藏窗口小部件。您必须调用show()以使窗口小部件再次可见
但是我不能使用 show()因为我想隐藏它。
如何做到这一点?我应该使用WinApi还是有QT方式,我错过了? ( Qt :: WindowStaysOnTopHint 标志是必要的)
UPD1:我已经实现了自己的系统托盘,我需要在任务栏上显示图标
UPD2:我已经尝试了 showMinimized()和 setWindowState(Qt :: WindowMinimized)。在第一种情况下,任务栏上有图标,但在恢复窗口后(由 showFullScreen()显示)有窗口控件:最小化,关闭。在第二种情况下,它可以根据需要最小化和恢复,但任务栏上没有图标。
答案 0 :(得分:0)
我做了我想做的事。但我使用了 WinApi 。希望这会对某人有所帮助。所以,毕竟
最小化我使用以下内容:
if (!isRecording()) {
try {
record();
getActivity().invalidateOptionsMenu();
} catch (Exception e) {
Log.e(getClass().getSimpleName(),
"Exception trying to record", e);
Toast.makeText(getActivity(), e.getMessage(),
Toast.LENGTH_LONG).show();
}
} else {
try {
stopRecording();
getActivity().invalidateOptionsMenu();
} catch (Exception e) {
Log.e(getClass().getSimpleName(),
"Exception trying to stop recording", e);
Toast.makeText(getActivity(), e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
恢复至" prev"我使用的状态:
ShowWindow(hwnd, SW_SHOWMINIMIZED);
设置 stayOnTop 标志由以下人员完成:
widget->show();
// or
widget->showFullScreen();