どうも!たっくんです!
スマホや、オサレ系UIのでよく見る(?)オサレなチェックボックスを、Qt(PySide/PyQt)とQSSを組み合わせて、簡単に作る方法をご紹介したいと思います!
クラスの骨格
まずは、QCheckBoxを継承した「StarCheckBox」を用意したいと思います!
from PySide import QtCore, QtGui class StarCheckBox(QtGui.QCheckBox): def __init__(self, *args, **kwargs): super(StarCheckBox, self).__init__(*args, **kwargs)
Stylesheetの設定
続いて、Stylesheetを使ってQCheckBoxを装飾したいと思います!チェックする場所の見た目を変更するには「indicator」の「checked」と「unchecked」に、画像を設定します(*´ω`*)b
from PySide import QtCore, QtGui class StarCheckBox(QtGui.QCheckBox): def __init__(self, *args, **kwargs): super(StarCheckBox, self).__init__(*args, **kwargs) self.setStyleSheet(''' QCheckBox::indicator:checked { image: url(":/SE_FavoriteStar.png"); } QCheckBox::indicator:unchecked { image: url(":/SE_FavoriteStarDefault.png"); } ''')
ここで指定している画像は、Mayaに内蔵されている画像を使用しました!
ご自身で用意される場合は、16px x 16pxで作るといい感じになると思います!
ご自身で用意される場合は、16px x 16pxで作るといい感じになると思います!
実験!
QCheckBoxの変わりに「StarCheckBox」を使って、ウインドウを作ってみると、、、、
四角いチェックボックスが、星型になりました!色の付いてない☆はOFFの状態なので、ポチポチして更に確認してみます!
画像を変えてみれば、iOSっぽいチェックボックスも作ることができます(゚∀゚)