| ■ | PyQt湯けむりウィジェットツアー(第4弾) |
#! /usr/local/bin/python
import sys
from qt import *
class MyWidget(QWidget):
def __init__(self, *args):
apply(QWidget.__init__, (self,) + args)
self.setCaption(self.tr("つよさをみる"))
self.lsva = QListView(self)
self.connect(self.lsva, SIGNAL("selectionChanged(QListViewItem*)"),
self.selectionChanged)
cmda = QPushButton(self.tr("決定"), self)
self.connect(cmda, SIGNAL("clicked()"), self.selected)
cmde = QPushButton(self.tr("終了"), self)
self.connect(cmde, SIGNAL("clicked()"), self.close)
self.resize(350, 220);
self.lsva.setGeometry(5, 5, 340, 180)
cmda.setGeometry(205, 190, 40, 25)
cmde.setGeometry(255, 190, 40, 25)
self.lsva.setRootIsDecorated(1)
for e in ('名前', 'ちから', 'すばやさ',
'かしこさ', 'あやしさ', 'ずぶとさ'):
self.lsva.addColumn(self.tr(e))
self.lvitops = { }
for e in ['1年1組', '1年2組']:
self.lvitops[e] = QListViewItem(self.lsva, self.tr(e))
a = QListViewItem(self.lvitops['1年1組'],
self.tr("まつお"), "40", "32", "25", "50", "48")
a = QListViewItem(self.lvitops['1年1組'],
self.tr("たけお"), "28", "46", "31", "23", "25")
a = QListViewItem(self.lvitops['1年1組'],
self.tr("うめお"), "54", "14", "22", "36", "63")
a = QListViewItem(self.lvitops['1年2組'],
self.tr("さけお"), "46", "19", "29", "34", "40")
a = QListViewItem(self.lvitops['1年2組'],
self.tr("ますお"), "62", "27", "40", "51", "45")
a = QListViewItem(self.lvitops['1年2組'],
self.tr("かつお"), "35", "44", "54", "37", "26")
def selectionChanged(self, *args):
print str(QString.local8Bit(args[0].text(0))) + "が選択されました。"
def selected(self, *args):
s = self.lsva.currentItem().text(0)
QMessageBox.information(self, "",
s.append(self.tr("が選択されました。")), "&OK", None, None, 0, 0)
a = QApplication(sys.argv)
a.setDefaultCodec(QTextCodec.codecForName("eucJP"))
a.setFont(QFont("fixed", 10, QFont.Normal))
w = MyWidget()
a.setMainWidget(w)
w.show()
a.exec_loop()
# end.
|
QListViewのすごいところは、
デフォルト設定でも既に十分使いこなせる外見動作になっていることで、
例えば(QListBoxなどと同様)
ツリーの項目の数が画面に収まらないほど増えれば、
自動的にスクロールバーが縦横につきますし、
データ部の上の列見出しの部分をクリックすれば、
その列を基準にデータを昇順にソートすることができます。
つまりこの例では、「ちから」見出しをクリックすれば力のある順に、
「あやしさ」見出しをクリックすれば怪しさのある順に(いやだなあ)
各サブツリーを構成する各項目が自動的にソートされます。
もちろん、
これらのデフォルト動作はQListViewのメソッドを使って細かく設定できます。
QListViewに項目を追加していく手順は次の通りです。
self.lsva = QListView(self)
self.lsva.addColumn(self.tr("名前"))
self.lsva.addColumn(self.tr("ちから"))
for e in ['1年1組', '1年2組']:
self.lvitops[e] = QListViewItem(self.lsva, self.tr(e))
a = QListViewItem(self.lvitops['1年1組'],
self.tr("まつお"), "40", "32", "25", "50", "48")
セクションのサブメニューに戻る
(first uploaded 2000/12/10 last updated 2002/03/21)