24

カスタムQWidgetがあり、タスクバーに表示したくないだけです。終了/最小化などを管理するためのQSystemTrayIconがあります。

4

4 に答える 4

22

ここで必要なのは、ある種の親プレースホルダーウィジェットだけだと思います。親なしでウィジェットを作成した場合、それはトップレベルのウィンドウと見なされます。ただし、トップレベルウィンドウの子として作成した場合は、子ウィンドウと見なされ、タスクバーエントリ自体は取得されません。一方、親ウィンドウは、表示するように設定したことがないため、タスクバーエントリも取得しません。このコードは私にとっては機能します。

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();
}

意図したとおりの場合、タスクバーのエントリは表示されません。

于 2010-10-30T09:09:52.217 に答える
11

ウィジェットにQt::SubWindowフラグを設定するだけです。

于 2015-12-02T16:02:36.283 に答える
8

タスクバーにウィジェットを表示せずにウィジェットを表示/非表示にしたい場合は、そのウィジェットのウィンドウフラグを確認してください。100%確信はありませんが、使用したと思いますQt::Dialog| Qt::ToolそしてQt::CustomizeWindowHintこれを達成するために、しかし私の窓も完全に装飾されていませんでした。それで遊ぶ場合に覚えておくべきもう1つのことは、アプリケーションの終了ポリシーです。QApplication::setQuitOnLastWindowClosed(false)最後のトップレベルウィンドウを閉じる/非表示にすると、通常はアプリケーションが終了するため、それを防ぐために呼び出す必要があるかもしれません...

于 2010-10-29T22:17:23.677 に答える
0

これを達成するための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()
于 2015-06-14T12:02:24.650 に答える