質問
私はカスタムqwidgetを持っています、そして、私はそれがタスクバーに表示されることをシンプルではありません。出口/最小化などを管理するためのQSystemTrayiconがあります。
解決
ここで必要なのは、ある種の親プレースホルダーウィジェットだけだと思います。親なしでウィジェットを作成すると、トップレベルのウィンドウと見なされます。しかし、トップレベルのウィンドウの子供として作成する場合、それは子のウィンドウと見なされます。一方、親のウィンドウは、目に見えることがないため、タスクバーエントリも取得しません。このコードはここで機能します。
class MyWindowWidget : public QWidget
{
public:
MyWindowWidget(QWidget *parent)
: QWidget(parent, Qt::Dialog)
{
}
};
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMainWindow window;
MyWindowWidget widget(&window);
widget.show();
return app.exec();
}
これが意図したい場合、タスクバーエントリは表示されません。
他のヒント
タスクバーに表示せずにウィジェットを表示/非表示にしたい場合は、そのウィジェットのウィンドウフラグをチェックするかもしれません。私は100%確信がありませんが、私は使用したと思います Qt::Dialog
| Qt::Tool
と Qt::CustomizeWindowHint
これを達成するために、しかし私の窓も完全に装飾されていませんでした。あなたがそれをプレイしている場合、あなたが心に留めておくかもしれないもう一つのことは、あなたのアプリケーションの出口ポリシーです。最後のトップレベルウィンドウを閉じる/隠すことは通常、アプリケーションを終了するので、電話する必要があるかもしれません QApplication::setQuitOnLastWindowClosed(false)
それを防ぐために...
ウィジェットにqt :: subwindowフラグを設定するだけです。
これをAChiveするPythonコード:
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent, Qt.Tool)
window = MainWindow()
window.show()
所属していません StackOverflow