Qt(PySide/PyQt)のWindowって色々な見た目のパターンを作れるけど、ちょっとわかりにくいのが「setWindowFlags」ですよね(´・ω・`)
メモも兼ねて、簡単にまとめてみたいと思います!(`・ω・´)ゞ
setWindowFlagsって?
setWindowFlagsで適用できる値は、大きくわけて「type」と「hints」にわけられます!「type」にあるものは1つだけを設定することができて、「hints」は好きなものを好きなだけ設定することができます!
from PySide import QtCore, QtGui window = QtGui.QWidget() window.setWindowFlags(QtCore.Qt.Window) window.show()
from PySide import QtCore, QtGui # 「|」で区切りながら設定する window = QtGui.QWidget() window.setWindowFlags( QtCore.Qt.Window|QtCore.Qt.WindowCloseButtonHint ) window.show()
from PySide import QtCore, QtGui # 指定が長すぎる場合は改行も可 window = QtGui.QWidget() window.setWindowFlags( QtCore.Qt.Window| QtCore.Qt.WindowMinimizeButtonHint| QtCore.Qt.WindowCloseButtonHint ) window.show()
Typeのサンプル
QtCore.Qt.Window
ウィジェットに親があるか関わらず、ウィンドウのフレームとタイトルバーが作られます。ウィジェットに親がない場合は、このフラグを解除することはできません。
QtCore.Qt.Dialog
ウィジェットがダイアログのような見た目になります。タイトルバーのボタンに、最大化・最小化がありません。
QtCore.Qt.Sheet(OSX向け)
QtCore.Qt.Drawer(OSX向け)
QtCore.Qt.Popup
ポップアップメニューに適したウィンドウシステムになります。他のウインドウをクリックすると消えます。
QtCore.Qt.Tool
ウィジェットがツールウインドウになります。 ツールウインドウとは、通常のタイトルバーや装飾よりも小さいウィンドウです。 親がある場合、ツールウィンドウは常にその上に表示されます。
QtCore.Qt.SplashScreen
ウインドウがスプラッシュ画面になります。 「PySide.QtGui.QSplashScreen」のデフォルトのタイプです。
Hintsのサンプル
QtCore.Qt.MSWindowsFixedSizeDialogHint
ウィンドウに境界線を与えます。 このスタイルは、固定サイズのダイアログに伝統的に使用されています。最大化が使えなくなります。
QtCore.Qt.FramelessWindowHint
フレームのないウインドウになります。移動・閉じるなどを独自に実装する必要があります。
QtCore.Qt.CustomizeWindowHint
ウィンドウタイトルの「hints」を無効にします。好きな要素だけ追加したい時に便利です。
QtCore.Qt.WindowTitleHint(CustomizeWindowHintと併用)
ウインドウのタイトルを追加します。CustomizeWindowHintと併用しない場合、閉じるボタンが追加されます。
QtCore.Qt.WindowMinimizeButtonHint
ウインドウに、縮小ボタンを追加します。CustomizeWindowHintと併用すると、閉じるボタンが使えなくなります。
QtCore.Qt.WindowMaximizeButtonHint
ウインドウに、最大化ボタンを追加します。CustomizeWindowHintと併用すると、閉じるボタンが使えなくなります。
QtCore.Qt.WindowCloseButtonHint
ウインドウに、閉じるボタンを追加します。縮小・最大化のボタンは表示されません。
QtCore.Qt.WindowStaysOnTopHint
ウインドウが常に手前に表示されます。
QtCore.Qt.WindowStaysOnBottomHint
ウインドウが常に後ろに表示されます。
スーパーマリオ オデッセイ1番くじの、大きな帽子クッションが欲しい!(*人′3`)