[[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式でのプロパティ * 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