2019年12月10日

ビットマップペイントツールのチュートリアルをやってみた その270 3dsmax 2019

引き続きMAXScriptマニュアルに載っている「チュートリアル-ビットマップペイントツールを9つの簡単なステップで作成する」 の続きを考えて見たい。

今回もPyside2の「QListWidget」について調べてみた。

リストはデフォルトでは1行しか選択出来ない排他選択状態になっている。これを変えるには「QListWidget」が継承している「QAbstractItemView」クラスの「setSelectionMode()」を使ってモードを切り替える。現在のモードを取得するのは同じクラスの「selectionMode()」だ。

選択モードは以下のものがある。

QAbstractItemView.SingleSelection

リスト内の1行だけ選択可能。CTRL+クリックで選択解除

QAbstractItemView.ContiguousSelection

リストをクリックすると1行だけ選択。SHIFT+クリックで選択されているアイテムからクリックしたアイテムまで選択。

QAbstractItemView.ExtendedSelection

ContiguousSelectionモードに加えてCTRL+クリックでクリックしたアイテムの選択状態を反転でき、マウスでドラッグして複数選択も出来る。

QAbstractItemView.MultiSelection

リストをクリックするとそのアイテムの選択状態が反転する。ドラッグするとドラッグ開始位置の選択状態を反転してその状態をドラッグしてアイテム全てに適用する。

QAbstractItemView.NoSelection

選択出来ない。

下のプログラムはこれらのモードを切り替えて動作を試すためのものだ。

from PySide2 import QtWidgets
from PySide2.QtWidgets import QAbstractItemView
import MaxPlus

class MyDialog(QtWidgets.QDialog):
  mode = [QAbstractItemView.SingleSelection,QAbstractItemView.ContiguousSelection,QAbstractItemView.ExtendedSelection,QAbstractItemView.MultiSelection,QAbstractItemView.NoSelection]

  def __init__(self, parent=None):
    super(MyDialog, self).__init__(parent)

    main_layout = QtWidgets.QVBoxLayout()

    self.mycomb = QtWidgets.QComboBox()
    self.mycomb.addItems(['SingleSelection','ContiguousSelection','ExtendedSelection','MultiSelection','NoSelection'])
    self.mycomb.currentIndexChanged[int].connect(self.changed)
    self.mylist = QtWidgets.QListWidget()
    self.mylist.addItems(['Item1','Item2','Item3','Item4','Item5'])

    main_layout.addWidget(self.mycomb)
    main_layout.addWidget(self.mylist)

    self.setLayout(main_layout)

    self.resize(220, 180)

  def changed(self, index):
    self.mylist.setSelectionMode(MyDialog.mode[index])    

w = MyDialog(MaxPlus.GetQMaxMainWindow())
w.show()

コンボボックスからモードを切り替えると選択モードが切り替わる。

fig 1

続きはまた次回。

maxまとめページ



take_z_ultima at 11:30│Comments(0)3ds Max | CG

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔   
 
 
 

Archives