- 追加された行はこの色です。
- 削除された行はこの色です。
[[FrontPage/Python/PySide]]
** 自動終了 [#bf3dac04]
# デバッグ用) 自動終了
self.timer = QTimer()
self.timer.singleShot(20*1000, self.close)
** QListViewの最速利用法 [#s22e7f8b]
# :: FileListView
self.model = QStringListModel()
self.listView = QListView()
self.listView.setModel(self.model)
self.model.setStringList(["abc", "def", "ghi", "jkl"])
self.listView.clicked.connect(self.flush_listitem)
@Slot()
def flush_listitem(self, index):
sel1 = index.data(Qt.DisplayRole)
sel2 = [i.data(Qt.DisplayRole) for i in self.listView.selectedIndexes()]
print sel1
print sel2
** Qt CSS Style一覧 [#r45ed1a1]
https://wiki.qt.io/Style-CSSBased
** QObject.sender() [#y76464fa]
シグナルの発行元オブジェクトを取得したい場合
https://wiki.qt.io/PySide-Pitfalls-Japanese
(注意) sender()は@Slotを実装してるメソッド内でのみ動く
class Listener(QObject):
@Slot()
def on_signal(self,*args):
print args
print self.sender()
listner = Listener()
btn.someSignal.connect(listener.on_signal)
** QtCore.Property [#reed123c]
プロパティのセッターにより,値が変更されると,シグナルを発行できる.
from PySide.QtCore import QObject, Property
class MyObject(QObject):
def __init__(self, startval=42):
QObject.__init__(self)
self.ppval = startval
def readPP(self):
return self.ppval
def setPP(self,val):
self.ppval = val
pp = Property(int, readPP, setPP)
obj = MyObject()
obj.pp = 47
** タスクトレイアプリ [#z3c0d513]
基本形
http://flame-blaze.net/archives/3094
Threadを使って実用的。ただコード動かない。
http://woodboy644.hatenablog.com/entry/2013/07/30/001910
** qApp.quitの注意点。 [#aae207c4]
self.connectでつながないと動かない
# : Quitアクション作成
self.quitAction = QAction("&Quit", self)
self.connect(self.quitAction, SIGNAL('triggered()'), qApp, SLOT('quit()'))
# self.quitAction.triggered.connect(qApp.quit)
** 画面サイズの保存 [#x1301a45]
def __init__():
# 設定を読み込む
self.mySettings = QSettings("my company", "hoge Analyser") # レジストリ
self.mySettings = QSettings("myMDIApp.ini", QSettings.IniFormat) # iniファイル
self.restoreGeometry(self.mySettings.value("abc/geometry")) # QWidgetとQMainWIndow
self.restoreState(self.mySettings.value("abc/windowState")) # QMainWindow
# ウインドウを閉じた時
def closeEvent(self, event):
self.mySettings.setValue("abc/geometry", self.saveGeometry())
self.mySettings.setValue("abc/windowState", self.saveState())
# 終了処理
qApp.quit()
* QML式でのプロパティ [#ke38ba37]
もし、QML式の中でオブジェクトのプロパティを使いたいなら、
そのプロパティはNOTIFYableでなくてはなりません。
(訳注:NOTIFYable=通知可能。ここではProperty関数のnotify引数が与えられている事)
以下は、シンプルなシグナルを使用する例です。
class Person(QtCore.QObject):
def __init__(self, name):
QtCore.QObject.__init__(self)
self._person_name = name
def _name(self):
return self._person_name
@QtCore.Signal
def name_changed(self):
pass
name = QtCore.Property(unicode, _name, notify=name_changed)
** 更なる使い方 [#j6576345]
http://nullege.com/codes/search/PySide.QtCore.Property