このページでは

QAbstractItemView Class

QAbstractItemView クラスは、アイテムビュークラスに基本的な機能を提供します。詳細...

ヘッダー: #include <QAbstractItemView>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
継承元: QAbstractScrollArea
継承元:

QColumnView、QHeaderView 、QListView 、QTableView 、およびQTreeView

パブリック型

enum DragDropMode { NoDragDrop, DragOnly, DropOnly, DragDrop, InternalMove }
enum EditTrigger { NoEditTriggers, CurrentChanged, DoubleClicked, SelectedClicked, EditKeyPressed, …, AllEditTriggers }
flags EditTriggers
enum ScrollHint { EnsureVisible, PositionAtTop, PositionAtBottom, PositionAtCenter }
enum ScrollMode { ScrollPerItem, ScrollPerPixel }
enum SelectionBehavior { SelectItems, SelectRows, SelectColumns }
enum SelectionMode { SingleSelection, ContiguousSelection, ExtendedSelection, MultiSelection, NoSelection }

プロパティ

パブリック関数

QAbstractItemView(QWidget *parent = nullptr)
virtual ~QAbstractItemView()
bool alternatingRowColors() const
int autoScrollMargin() const
void closePersistentEditor(const QModelIndex &index)
QModelIndex currentIndex() const
Qt::DropAction defaultDropAction() const
QAbstractItemView::DragDropMode dragDropMode() const
bool dragDropOverwriteMode() const
bool dragEnabled() const
QAbstractItemView::EditTriggers editTriggers() const
bool hasAutoScroll() const
QAbstractItemView::ScrollMode horizontalScrollMode() const
QSize iconSize() const
virtual QModelIndex indexAt(const QPoint &point) const = 0
QWidget *indexWidget(const QModelIndex &index) const
bool isPersistentEditorOpen(const QModelIndex &index) const
QAbstractItemDelegate *itemDelegate() const
QAbstractItemDelegate *itemDelegateForColumn(int column) const
(since 6.0) virtual QAbstractItemDelegate *itemDelegateForIndex(const QModelIndex &index) const
QAbstractItemDelegate *itemDelegateForRow(int row) const
virtual void keyboardSearch(const QString &search)
Qt::MatchFlags keyboardSearchFlags() const
QAbstractItemModel *model() const
void openPersistentEditor(const QModelIndex &index)
void resetHorizontalScrollMode()
void resetVerticalScrollMode()
QModelIndex rootIndex() const
virtual void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible) = 0
QAbstractItemView::SelectionBehavior selectionBehavior() const
QAbstractItemView::SelectionMode selectionMode() const
QItemSelectionModel *selectionModel() const
void setAlternatingRowColors(bool enable)
void setAutoScroll(bool enable)
void setAutoScrollMargin(int margin)
void setDefaultDropAction(Qt::DropAction dropAction)
void setDragDropMode(QAbstractItemView::DragDropMode behavior)
void setDragDropOverwriteMode(bool overwrite)
void setDragEnabled(bool enable)
void setDropIndicatorShown(bool enable)
void setEditTriggers(QAbstractItemView::EditTriggers triggers)
void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
void setIconSize(const QSize &size)
void setIndexWidget(const QModelIndex &index, QWidget *widget)
void setItemDelegate(QAbstractItemDelegate *delegate)
void setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)
void setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)
void setKeyboardSearchFlags(Qt::MatchFlags searchFlags)
virtual void setModel(QAbstractItemModel *model)
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)
void setSelectionMode(QAbstractItemView::SelectionMode mode)
virtual void setSelectionModel(QItemSelectionModel *selectionModel)
void setTabKeyNavigation(bool enable)
void setTextElideMode(Qt::TextElideMode mode)
void setUpdateThreshold(int threshold)
void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)
bool showDropIndicator() const
virtual int sizeHintForColumn(int column) const
QSize sizeHintForIndex(const QModelIndex &index) const
virtual int sizeHintForRow(int row) const
bool tabKeyNavigation() const
Qt::TextElideMode textElideMode() const
int updateThreshold() const
QAbstractItemView::ScrollMode verticalScrollMode() const
virtual QRect visualRect(const QModelIndex &index) const = 0

再実装されたパブリック関数

virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const override

パブリックスロット

void clearSelection()
void edit(const QModelIndex &index)
virtual void reset()
void scrollToBottom()
void scrollToTop()
virtual void selectAll()
void setCurrentIndex(const QModelIndex &index)
virtual void setRootIndex(const QModelIndex &index)
void update(const QModelIndex &index)

シグナル

void activated(const QModelIndex &index)
void clicked(const QModelIndex &index)
void doubleClicked(const QModelIndex &index)
void entered(const QModelIndex &index)
void iconSizeChanged(const QSize &size)
void pressed(const QModelIndex &index)
void viewportEntered()

protected 型

enum CursorAction { MoveUp, MoveDown, MoveLeft, MoveRight, MoveHome, …, MovePrevious }
enum DropIndicatorPosition { OnItem, AboveItem, BelowItem, OnViewport }
enum State { NoState, DraggingState, DragSelectingState, EditingState, ExpandingState, …, AnimatingState }

保護された関数

QPoint dirtyRegionOffset() const
QAbstractItemView::DropIndicatorPosition dropIndicatorPosition() const
virtual bool edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event)
void executeDelayedItemsLayout()
virtual int horizontalOffset() const = 0
(since 6.0) virtual void initViewItemOption(QStyleOptionViewItem *option) const
virtual bool isIndexHidden(const QModelIndex &index) const = 0
virtual QModelIndex moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) = 0
void scheduleDelayedItemsLayout()
void scrollDirtyRegion(int dx, int dy)
virtual QModelIndexList selectedIndexes() const
virtual QItemSelectionModel::SelectionFlags selectionCommand(const QModelIndex &index, const QEvent *event = nullptr) const
void setDirtyRegion(const QRegion &region)
virtual void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) = 0
void setState(QAbstractItemView::State state)
virtual void startDrag(Qt::DropActions supportedActions)
QAbstractItemView::State state() const
virtual int verticalOffset() const = 0
virtual QRegion visualRegionForSelection(const QItemSelection &selection) const = 0

再実装されたプロテクトされた関数

virtual void dragEnterEvent(QDragEnterEvent *event) override
virtual void dragLeaveEvent(QDragLeaveEvent *event) override
virtual void dragMoveEvent(QDragMoveEvent *event) override
virtual void dropEvent(QDropEvent *event) override
virtual bool event(QEvent *event) override
virtual bool eventFilter(QObject *object, QEvent *event) override
virtual void focusInEvent(QFocusEvent *event) override
virtual bool focusNextPrevChild(bool next) override
virtual void focusOutEvent(QFocusEvent *event) override
virtual void inputMethodEvent(QInputMethodEvent *event) override
virtual void keyPressEvent(QKeyEvent *event) override
virtual void mouseDoubleClickEvent(QMouseEvent *event) override
virtual void mouseMoveEvent(QMouseEvent *event) override
virtual void mousePressEvent(QMouseEvent *event) override
virtual void mouseReleaseEvent(QMouseEvent *event) override
virtual void resizeEvent(QResizeEvent *event) override
virtual void timerEvent(QTimerEvent *event) override
virtual bool viewportEvent(QEvent *event) override
virtual QSize viewportSizeHint() const override

保護されたスロット

virtual void closeEditor(QWidget*editor, QAbstractItemDelegate::EndEditHinthint)
virtual void commitData(QWidget*editor)
仮想 void currentChanged(const QModelIndex&current, const QModelIndex&previous)
仮想 void dataChanged(const QModelIndex&topLeft, const QModelIndex&bottomRight, const QList<int>&roles= QList<int>())
仮想 void editorDestroyed(QObject*editor)
仮想 void rowsAboutToBeRemoved(const QModelIndex&parent, intstart, intend)
virtual void rowsInserted(const QModelIndex&parent, intstart, intend)
仮想 void selectionChanged(const QItemSelection&selected, const QItemSelection&deselected)
仮想 void updateGeometries()

詳細な説明

QAbstractItemView クラスは、QAbstractItemModel を使用するすべての標準ビューの基底クラスです。QAbstractItemView は抽象クラスであり、それ自体をインスタンス化することはできません。このクラスは、シグナルとスロットのメカニズムを通じてモデルと連携するための標準インターフェースを提供し、サブクラスがモデルの変更に合わせて常に最新の状態を維持できるようにします。 このクラスは、キーボードおよびマウスによるナビゲーション、ビューポートのスクロール、項目の編集、および選択操作に対する標準的なサポートを提供します。キーボードによるナビゲーションでは、以下の機能が実装されています:

キー機能
矢印キー現在のアイテムを変更し、選択します。
Ctrlキー+矢印キー現在の項目を切り替えますが、選択はしません。
Shiftキー+矢印キー現在の項目を切り替え、その項目を選択します。以前に選択されていた項目は選択解除されません。
Ctrl+スペース現在の項目の選択状態を切り替えます。
Tab/Backtab現在の項目を次の項目/前の項目に切り替えます。
Home/Endモデル内の最初の項目/最後の項目を選択します。
Page Up/Page Downビューに表示されている行数分、表示されている行を上下にスクロールします。
Ctrl+Aモデル内のすべての項目を選択します。

なお、上記の表は、selection mode がこれらの操作を許可していることを前提としています。たとえば、選択モードが `QAbstractItemView::NoSelection` の場合、アイテムを選択することはできません。

QAbstractItemView クラスは、Model/View クラスの一つであり、Qtのモデル/ビューフレームワークの一部です。

QAbstractItemView を継承するビュークラスは、項目の描画、項目のジオメトリの返送、項目の検索など、ビュー固有の機能のみを実装すれば十分です。

QAbstractItemView は、edit() やsetCurrentIndex() などの一般的なスロットを提供しています。また、dataChanged()、rowsInserted()、rowsAboutToBeRemoved()、selectionChanged()、currentChanged() など、多くの protected スロットも提供されています。

ルートアイテムはrootIndex() によって返され、現在のアイテムはcurrentIndex() によって返されます。アイテムが表示されていることを確認するには、scrollTo() を使用します。

QAbstractItemViewの関数の中には、setHorizontalScrollMode()やsetVerticalScrollMode()など、スクロールに関連するものがいくつかあります。スクロールバーの範囲を設定するには、例えば、ビューのresizeEvent()関数を再実装することができます:

void MyView::resizeEvent(QResizeEvent *event) {
    horizontalScrollBar()->setRange(0, realWidth - width());
    ...
}

なお、この範囲はウィジェットが表示されるまで更新されません。

他にも、選択制御に関連する関数がいくつかあります。例えば、setSelectionMode() やsetSelectionBehavior() などです。このクラスは、デフォルトの選択モデル(selectionModel())を提供していますが、QItemSelectionModel のインスタンスを引数としてsetSelectionModel() を使用することで、これを置き換えることができます。

項目の表示および編集を完全に制御するには、setItemDelegate() を使用してデリゲートを指定できます。

QAbstractItemView には多くの protected 関数が用意されています。その中には、edit() やcommitData() など、編集に関連する関数もあれば、キーボードやマウスのイベントハンドラも含まれています。

注: QAbstractItemViewを継承し、ビューポートの内容を更新する場合は 、すべての描画処理がビューポート上で行われるため、update() ではなく viewport->update() を使用する必要があります。

「ビュークラス」、「モデル/ビュープログラミング」、および「QAbstractItemModel 」も参照してください 。

メンバ型のドキュメント

enum QAbstractItemView::CursorAction

この列挙型は、項目間を移動するさまざまな方法を定義しており、

定数値説明
QAbstractItemView::MoveUp0現在の項目の上の項目に移動します。
QAbstractItemView::MoveDown1現在の項目の下の項目に移動します。
QAbstractItemView::MoveLeft2現在の項目の左にある項目に移動します。
QAbstractItemView::MoveRight3現在の項目の右にある項目に移動します。
QAbstractItemView::MoveHome4左上の角にある項目に移動します。
QAbstractItemView::MoveEnd5右下の角にある項目に移動します。
QAbstractItemView::MovePageUp6現在の項目の 1 ページ上に移動します。
QAbstractItemView::MovePageDown7現在の項目の 1 ページ下に移動します。
QAbstractItemView::MoveNext8現在の項目の次の項目に移動します。
QAbstractItemView::MovePrevious9現在の項目の前の項目に移動します。

moveCursor()も参照してください 。

enum QAbstractItemView::DragDropMode

ビューが対応できるさまざまなドラッグ&ドロップイベントについて説明します。デフォルトでは、ビューはドラッグやドロップをサポートしていません(NoDragDrop )。

定数値説明
QAbstractItemView::NoDragDrop0ドラッグやドロップをサポートしません。
QAbstractItemView::DragOnly1ビューは自身の項目のドラッグをサポートしています
QAbstractItemView::DropOnly2ビューはドロップを受け付けます
QAbstractItemView::DragDrop3ビューはドラッグとドロップの両方をサポートしています
QAbstractItemView::InternalMove4ビューは、自身からの移動(コピーではない)操作のみを受け付けます。

使用するモデルがドラッグ&ドロップ操作をサポートしている必要があることに注意してください。

「 setDragDropMode()」および「アイテムビューでのドラッグ&ドロップの使用」も参照してください 。

enum QAbstractItemView::DropIndicatorPosition

この列挙型は、現在のマウス位置にあるインデックスに対するドロップインジケーターの位置を示します:

定数値説明
QAbstractItemView::OnItem0アイテムはインデックスの上にドロップされます。
QAbstractItemView::AboveItem1アイテムはインデックスの上にドロップされます。
QAbstractItemView::BelowItem2アイテムはインデックスの下にドロップされます。
QAbstractItemView::OnViewport3アイテムは、アイテムが存在しないビューポートの領域にドロップされます。各ビューがビューポートにドロップされたアイテムをどのように処理するかは、使用されている基盤となるモデルの動作によって異なります。

enum QAbstractItemView::EditTrigger
flags QAbstractItemView::EditTriggers

この列挙型は、アイテムの編集を開始するアクションを表します。

定数値説明
QAbstractItemView::NoEditTriggers0編集できません。
QAbstractItemView::CurrentChanged1現在の項目が変更されるたびに編集が開始されます。
QAbstractItemView::DoubleClicked2項目をダブルクリックすると編集が開始されます。
QAbstractItemView::SelectedClicked4すでに選択されている項目をクリックすると編集が開始されます。
QAbstractItemView::EditKeyPressed8アイテム上でプラットフォーム編集キーが押されると編集が開始されます。
QAbstractItemView::AnyKeyPressed16アイテム上で任意のキーが押されると編集が開始されます。
QAbstractItemView::AllEditTriggers31上記のすべてのアクションで編集が開始されます。

EditTriggers 型は、QFlags<EditTrigger> の typedef です。これは、EditTrigger 値の論理和(OR)の組み合わせを格納します。

enum QAbstractItemView::ScrollHint

定数値説明
QAbstractItemView::EnsureVisible0アイテムが確実に表示されるようにスクロールします。
QAbstractItemView::PositionAtTop1スクロールして、アイテムをビューポートの最上部に配置します。
QAbstractItemView::PositionAtBottom2スクロールして、アイテムをビューポートの下部に配置します。
QAbstractItemView::PositionAtCenter3スクロールして、アイテムをビューポートの中央に配置します。

enum QAbstractItemView::ScrollMode

スクロールバーの動作を指定します。スクロールモードを ScrollPerPixel に設定した場合、setSingleStep() を使用して明示的に設定されていない限り、1 ステップのサイズが自動的に調整されます。1 ステップのサイズを -1 に設定することで、自動調整を元に戻すことができます。

定数値説明
QAbstractItemView::ScrollPerItem0ビューは、コンテンツを1項目ずつスクロールします。
QAbstractItemView::ScrollPerPixel1ビューは、コンテンツを 1 ピクセルずつスクロールします。

enum QAbstractItemView::SelectionBehavior

定数値説明
QAbstractItemView::SelectItems0単一の項目を選択します。
QAbstractItemView::SelectRows1行のみを選択します。
QAbstractItemView::SelectColumns2列のみを選択します。

enum QAbstractItemView::SelectionMode

この列挙型は、ビューがユーザーの選択に対してどのように反応するかを示します:

定数値説明
QAbstractItemView::SingleSelection1ユーザーが項目を選択すると、すでに選択されていた項目はすべて選択解除されます。ユーザーは、選択済みの項目をクリックする際に Ctrl キーを押すことで、その項目の選択を解除することができます。
QAbstractItemView::ContiguousSelection4ユーザーが通常の方法で項目を選択すると、選択状態が解除され、新しい項目が選択されます。ただし、ユーザーがShiftキーを押しながら項目をクリックした場合、現在の項目とクリックした項目の間のすべての項目が、クリックした項目の状態に応じて選択されるか、または選択解除されます。
QAbstractItemView::ExtendedSelection3ユーザーが通常の方法で項目を選択すると、選択状態が解除され、新しい項目が選択されます。ただし、ユーザーが項目をクリックする際にCtrlキーを押している場合、クリックした項目の状態が切り替わり、その他の項目は変更されません。 ユーザーがShiftキーを押しながら項目をクリックすると、現在の項目とクリックされた項目の間のすべての項目が、クリックされた項目の状態に応じて選択または選択解除されます。マウスをドラッグして複数の項目を選択することもできます。
QAbstractItemView::MultiSelection2ユーザーが通常の方法で項目を選択すると、その項目の選択状態が切り替わり、他の項目は変更されません。マウスをドラッグして複数の項目を選択範囲内に含めることで、それらの項目の選択状態を切り替えることができます。
QAbstractItemView::NoSelection0項目は選択できません。

最も一般的に使用されるモードは、SingleSelection および ExtendedSelection です。

enum QAbstractItemView::State

ビューが取り得るさまざまな状態について説明します。通常、これは独自のビューを再実装する場合にのみ参考になります。

定数値説明
QAbstractItemView::NoState0これがデフォルトの状態です。
QAbstractItemView::DraggingState1ユーザーがアイテムをドラッグしています。
QAbstractItemView::DragSelectingState2ユーザーが項目を選択しています。
QAbstractItemView::EditingState3ユーザーがウィジェットエディタで項目を編集しています。
QAbstractItemView::ExpandingState4ユーザーが項目のブランチを開いています。
QAbstractItemView::CollapsingState5ユーザーが項目のブランチを閉じている。
QAbstractItemView::AnimatingState6アイテムビューでアニメーションが実行されています。

プロパティのドキュメント

alternatingRowColors : bool

このプロパティは、背景を交互の色で描画するかどうかを指定します

このプロパティがtrue に設定されている場合、項目の背景はQPalette::Base およびQPalette::AlternateBase を使用して描画されます。それ以外の場合は、QPalette::Base の色を使用して背景が描画されます。

デフォルトでは、このプロパティは `false` です。

アクセス関数:

bool alternatingRowColors() const
void setAlternatingRowColors(bool enable)

autoScroll : bool

このプロパティは、ドラッグ移動イベント時の自動スクロールが有効かどうかを表します

このプロパティが true(デフォルト)に設定されている場合、ユーザーがビューポートの端から 16 ピクセル以内の範囲をドラッグすると、QAbstractItemView はビューの内容を自動的にスクロールします。現在のアイテムが変更された場合、そのアイテムが完全に表示されるように、ビューは自動的にスクロールします。

このプロパティは、ビューポートがドロップを受け入れる場合にのみ機能します。このプロパティを false に設定すると、自動スクロールは無効になります。

アクセス関数:

bool hasAutoScroll() const
void setAutoScroll(bool enable)

autoScrollMargin : int

このプロパティは、自動スクロールがトリガーされる領域のサイズを保持します

このプロパティは、ビューポートの端にある、自動スクロールをトリガーする領域のサイズを制御します。デフォルト値は 16 ピクセルです。

アクセス関数:

int autoScrollMargin() const
void setAutoScrollMargin(int margin)

defaultDropAction : Qt::DropAction

このプロパティは、QAbstractItemView::drag() でデフォルトで使用されるドロップアクションを保持します。

このプロパティが設定されていない場合、サポートされているアクションに CopyAction が含まれているときは、ドロップアクションは CopyAction になります。

アクセス関数:

Qt::DropAction defaultDropAction() const
void setDefaultDropAction(Qt::DropAction dropAction)

関連項目: showDropIndicator およびdragDropOverwriteMode 。

dragDropMode : DragDropMode

このプロパティには、ビューが反応するドラッグ&ドロップイベントが格納されます

アクセス関数:

QAbstractItemView::DragDropMode dragDropMode() const
void setDragDropMode(QAbstractItemView::DragDropMode behavior)

関連項目: showDropIndicator およびdragDropOverwriteMode 。

dragDropOverwriteMode : bool

このプロパティは、ビューのドラッグ&ドロップの動作を指定します。

値が `true` の場合、選択したデータをドロップすると既存のアイテムデータが上書きされ、データを移動するとアイテムがクリアされます。値が `false` の場合、選択したデータをドロップすると新しいアイテムとして挿入されます。データを移動すると、アイテムも削除されます。

デフォルト値はfalse であり、これはQListView およびQTreeView のサブクラスと同様です。一方、QTableView サブクラスでは、このプロパティはtrue に設定されています。

注:これは項目の上書きを防ぐことを意図したものではありません。モデルの flags() の実装において、Qt::ItemIsDropEnabled を返さないようにすることで、上書きを防ぐ必要があります。

アクセス関数:

bool dragDropOverwriteMode() const
void setDragDropOverwriteMode(bool overwrite)

dragDropModeも参照してください 。

dragEnabled : bool

このプロパティは、ビューが自身の項目のドラッグをサポートしているかどうかを示します

アクセス関数:

bool dragEnabled() const
void setDragEnabled(bool enable)

関連項目: showDropIndicator 、DragDropMode 、dragDropOverwriteMode 、およびacceptDrops 。

editTriggers : EditTriggers

このプロパティは、どのアクションが項目の編集を開始するかを指定します

このプロパティは、EditTrigger で定義されたフラグの組み合わせであり、OR演算子を用いて結合されています。実行されたアクションがこのプロパティに設定されている場合のみ、ビューは項目の編集を開始します。

デフォルト値は次のとおりです:

アクセス関数:

QAbstractItemView::EditTriggers editTriggers() const
void setEditTriggers(QAbstractItemView::EditTriggers triggers)

horizontalScrollMode : ScrollMode

ビューがコンテンツを水平方向にスクロールする方法

このプロパティは、ビューがコンテンツを水平方向にスクロールする方法を制御します。スクロールは、ピクセル単位または項目単位で行うことができます。デフォルト値は、QStyle::SH_ItemView_ScrollMode というスタイルヒントを通じてスタイルから取得されます。

アクセス関数:

QAbstractItemView::ScrollMode horizontalScrollMode() const
void setHorizontalScrollMode(QAbstractItemView::ScrollMode mode)
void resetHorizontalScrollMode()

iconSize : QSize

このプロパティは、項目のアイコンのサイズを保持します

ビューが表示されている状態でこのプロパティを設定すると、項目のレイアウトが再計算されます。

アクセス関数:

QSize iconSize() const
void setIconSize(const QSize &size)

Notifierシグナル:

void iconSizeChanged(const QSize &size)

[since 6.11] keyboardSearchFlags : Qt::MatchFlags

このプロパティは、keyboardSearch() のデフォルトの実装が、指定された文字列をモデルのデータとどのように照合するかを決定します。

デフォルト値はQt::MatchStartsWith|Qt::MatchWrap です。

この列挙型は Qt 6.11 で導入されました。

アクセス関数:

Qt::MatchFlags keyboardSearchFlags() const
void setKeyboardSearchFlags(Qt::MatchFlags searchFlags)

関連項目: keyboardSearch() およびQAbstractItemModel::match()。

selectionBehavior : SelectionBehavior

このプロパティは、ビューが使用する選択動作を指定します

このプロパティは、選択が単一の項目、行、または列単位で行われるかを指定します。

アクセス関数:

QAbstractItemView::SelectionBehavior selectionBehavior() const
void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

関連項目: SelectionMode およびSelectionBehavior 。

selectionMode : SelectionMode

このプロパティは、ビューがどの選択モードで動作するかを指定します

このプロパティは、ユーザーが1つまたは複数の項目を選択できるかどうか、および複数の項目を選択する場合に、その選択範囲が連続した項目でなければならないかどうかを制御します。

アクセス関数:

QAbstractItemView::SelectionMode selectionMode() const
void setSelectionMode(QAbstractItemView::SelectionMode mode)

関連項目: SelectionMode およびSelectionBehavior 。

showDropIndicator : bool

このプロパティは、アイテムをドラッグしてドロップする際にドロップインジケーターを表示するかどうかを指定します。

アクセス関数:

bool showDropIndicator() const
void setDropIndicatorShown(bool enable)

関連項目: dragEnabled 、DragDropMode 、dragDropOverwriteMode 、およびacceptDrops 。

tabKeyNavigation : bool

このプロパティは、TabキーおよびBackTabキーによる項目ナビゲーションが有効かどうかを示します。

アクセス関数:

bool tabKeyNavigation() const
void setTabKeyNavigation(bool enable)

textElideMode : Qt::TextElideMode

このプロパティは、省略されたテキスト内の「...」の位置を保持します。

すべてのアイテムビューのデフォルト値は、Qt::ElideRight です。

アクセス関数:

Qt::TextElideMode textElideMode() const
void setTextElideMode(Qt::TextElideMode mode)

[since 6.9] updateThreshold : int

このプロパティは、dataChanged() 内でビューの完全更新を直接トリガーするための、変更されたインデックスの数を保持しています。

dataChanged() 内のアルゴリズムは、変更されたインデックスが可視であるかどうかを計算することで、ビューの完全更新を最小限に抑えようとします。 変更点が多く、かつその変更規模も大きい非常に大規模なモデルの場合、このチェック処理に実際の更新処理よりも長い時間がかかる可能性があり、かえって非効率的になることがあります。このプロパティを使用すると、変更されたインデックスの数が指定された値を超えた場合に、チェックをスキップして直接完全更新をトリガーするようアルゴリズムを制御できます。

デフォルト値は 200 です。

この列挙型は Qt 6.9 で導入されました。

アクセス関数:

int updateThreshold() const
void setUpdateThreshold(int threshold)

関連項目: ` dataChanged()`。

verticalScrollMode : ScrollMode

ビューがコンテンツを垂直方向にスクロールする方法

このプロパティは、ビューがコンテンツを垂直方向にスクロールする方法を制御します。スクロールは、ピクセル単位または項目単位で行うことができます。デフォルト値は、QStyle::SH_ItemView_ScrollMode スタイルヒントを介してスタイルから取得されます。

アクセス関数:

QAbstractItemView::ScrollMode verticalScrollMode() const
void setVerticalScrollMode(QAbstractItemView::ScrollMode mode)
void resetVerticalScrollMode()

メンバ関数のドキュメント

[explicit] QAbstractItemView::QAbstractItemView(QWidget *parent = nullptr)

指定されたparent を使用して、抽象アイテムビューを構築します。

[virtual noexcept] QAbstractItemView::~QAbstractItemView()

景観を台無しにする。

[signal] void QAbstractItemView::activated(const QModelIndex &index)

このシグナルは、index で指定された項目がユーザーによってアクティブ化されたときに発火します。項目のアクティブ化方法はプラットフォームによって異なります。例えば、項目をシングルクリックまたはダブルクリックしたり、項目がフォーカスされている状態で Return キーや Enter キーを押したりすることなどです。

関連項目: clicked()、doubleClicked()、entered()、およびpressed()。

[slot] void QAbstractItemView::clearSelection()

選択されているすべての項目の選択を解除します。現在のインデックスは変更されません。

setSelection() およびselectAll()も参照してください 。

[signal] void QAbstractItemView::clicked(const QModelIndex &index)

このシグナルは、マウスボタンの左クリックが行われたときに発火します。マウスがクリックされた項目は、index で指定されます。このシグナルは、インデックスが有効な場合にのみ発火します。

activated()、doubleClicked()、entered()、およびpressed()も参照してください 。

[virtual protected slot] void QAbstractItemView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndEditHint hint)

指定されたeditor を閉じ、解放します。hint は、編集操作の終了時にビューがどのように反応すべきかを指定するために使用されます。たとえば、このヒントによって、ビュー内の次の項目を編集用に開くように指示することができます。

edit() およびcommitData()も参照してください 。

void QAbstractItemView::closePersistentEditor(const QModelIndex &index)

指定されたindex にある項目の永続エディタを閉じます。

openPersistentEditor() およびisPersistentEditorOpen()も参照してください 。

[virtual protected slot] void QAbstractItemView::commitData(QWidget *editor)

editor 内のデータをモデルにコミットします。

「closeEditor()」も参照してください 。

[virtual protected slot] void QAbstractItemView::currentChanged(const QModelIndex &current, const QModelIndex &previous)

このスロットは、新しいアイテムが現在のアイテムになったときに呼び出されます。以前の現在のアイテムは `previous ` インデックスで指定され、新しいアイテムは `current ` インデックスで指定されます。

アイテムの変更について知りたい場合は、dataChanged() シグナルを参照してください。

QModelIndex QAbstractItemView::currentIndex() const

現在の項目のモデルインデックスを返します。

setCurrentIndex()も参照してください 。

[virtual protected slot] void QAbstractItemView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QList<int> &roles = QList<int>())

このスロットは、モデル内で指定されたroles を持つ項目が変更された際に呼び出されます。変更された項目は、topLeft からbottomRight までの範囲に含まれるものです。項目が1つだけ変更された場合は、topLeft ==bottomRight となります。

変更されたroles は、空のコンテナ(すべてが変更されたことを意味する)であるか、変更されたロールのサブセットを含む非空のコンテナのいずれかになります。

注: Qt XMLが提供するビューでは、 dataChanged() メソッドはQt::ToolTipRole を考慮しません。

[protected] QPoint QAbstractItemView::dirtyRegionOffset() const

ビュー内の変更済み領域のオフセットを返します。

scrollDirtyRegion() を使用し、QAbstractItemView のサブクラスでpaintEvent() を実装する場合は、ペイントイベントで指定された領域を、この関数から返されるオフセットで変換する必要があります。

scrollDirtyRegion() およびsetDirtyRegion()も参照してください 。

[signal] void QAbstractItemView::doubleClicked(const QModelIndex &index)

このシグナルは、マウスボタンがダブルクリックされたときに発せられます。マウスがダブルクリックされた項目は、index で指定されます。このシグナルは、インデックスが有効な場合にのみ発せられます。

clicked() およびactivated()も参照してください 。

[override virtual protected] void QAbstractItemView::dragEnterEvent(QDragEnterEvent *event)

QAbstractScrollArea::dragEnterEvent(QDragEnterEvent *event) を再実装します。

この関数は、ドラッグ&ドロップ操作がウィジェットに入ってきた際に、指定されたevent を引数として呼び出されます。ドラッグが有効なドロップ先(例:ドロップを受け入れるアイテムの上)にある場合、イベントは受け入れられます。そうでない場合は無視されます。

dropEvent() およびstartDrag()も参照してください 。

[override virtual protected] void QAbstractItemView::dragLeaveEvent(QDragLeaveEvent *event)

QAbstractScrollArea::dragLeaveEvent(QDragLeaveEvent *event) を再実装します。

この関数は、ドラッグ中のアイテムがビューから離れたときに呼び出されます。event は、ドラッグ&ドロップ操作の状態を表します。

[override virtual protected] void QAbstractItemView::dragMoveEvent(QDragMoveEvent *event)

QAbstractScrollArea::dragMoveEvent(QDragMoveEvent *event) を再実装します。

この関数は、ウィジェット上でドラッグ&ドロップ操作が行われている間、指定されたevent を引数として継続的に呼び出されます。たとえば、ユーザーが選択範囲をビューの右端または下端までドラッグした場合など、ビューのスクロールを引き起こす可能性があります。この場合、イベントは受理されますが、それ以外の場合は無視されます。

dropEvent() およびstartDrag()も参照してください 。

[override virtual protected] void QAbstractItemView::dropEvent(QDropEvent *event)

QAbstractScrollArea::dropEvent(QDropEvent *event) を再実装します。

ウィジェット上でドロップイベントが発生すると、指定された `event ` を引数としてこの関数が呼び出されます。モデルがイベントの位置を受け入れる場合、ドロップイベントは受け入れられます。そうでない場合は無視されます。

startDrag()も参照してください 。

[protected] QAbstractItemView::DropIndicatorPosition QAbstractItemView::dropIndicatorPosition() const

最も近いアイテムに対するドロップインジケーターの位置を返します。

[slot] void QAbstractItemView::edit(const QModelIndex &index)

指定されたindex に対応する項目が編集可能な場合、その項目の編集を開始します。

なお、この関数は現在のインデックスを変更しません。現在のインデックスによって編集対象の次の項目と前の項目が定義されるため、ユーザーはキーボードによるナビゲーションが期待通りに動作しないと感じる可能性があります。一貫したナビゲーション動作を実現するには、この関数の呼び出し前に、同じモデルインデックスを指定してsetCurrentIndex()を呼び出してください。

注:この スロットは オーバーロードされています。このスロットに接続するには:

// Connect using qOverload:
connect(sender, &SenderClass::signal,
        abstractItemView, qOverload(&QAbstractItemView::edit));

// Or using a lambda as wrapper:
connect(sender, &SenderClass::signal,
        abstractItemView, [receiver = abstractItemView](const QModelIndex &index) { receiver->edit(index); });
その他の例や手法については、「オーバーロードされたスロットへの接続」を参照してください。

QModelIndex::flags()も参照してください 。

[virtual protected] bool QAbstractItemView::edit(const QModelIndex &index, QAbstractItemView::EditTrigger trigger, QEvent *event)

index にある項目の編集を開始し、必要に応じてエディタを作成します。ビューのState がEditingState になった場合はtrue を返し、そうでない場合はfalse を返します。

編集処理を引き起こしたアクションは `trigger` で記述され、関連するイベントは `event` で指定されます。

trigger をQAbstractItemView::AllEditTriggers に指定することで、編集を強制的に実行できます。

closeEditor()も参照してください 。

[virtual protected slot] void QAbstractItemView::editorDestroyed(QObject *editor)

この関数は、指定されたeditor が破棄されたときに呼び出されます。

closeEditor()も参照してください 。

[signal] void QAbstractItemView::entered(const QModelIndex &index)

このシグナルは、マウスカーソルが `index` で指定された項目に入ったときに発火します。この機能が動作するには、マウス追跡が有効になっている必要があります。

関連項目: viewportEntered()、activated()、clicked()、doubleClicked()、pressed()も参照してください 。

[override virtual protected] bool QAbstractItemView::event(QEvent *event)

QAbstractScrollArea::event(QEvent *event) を再実装します。

[override virtual protected] bool QAbstractItemView::eventFilter(QObject *object, QEvent *event)

QObject::eventFilter(QObject *watched, QEvent *event) を再実装します。

[protected] void QAbstractItemView::executeDelayedItemsLayout()

イベント処理が開始されるのを待たずに、スケジュールされたレイアウトを実行します。

scheduleDelayedItemsLayout()も参照してください 。

[override virtual protected] void QAbstractItemView::focusInEvent(QFocusEvent *event)

QWidget::focusInEvent(QFocusEvent *event) を再実装します。

この関数は、ウィジェットがフォーカスを取得した際に、指定されたevent を引数として呼び出されます。デフォルトでは、このイベントは無視されます。

setFocus() およびfocusOutEvent()も参照してください 。

[override virtual protected] bool QAbstractItemView::focusNextPrevChild(bool next)

QWidget::focusNextPrevChild (bool next)を再実装します。

[override virtual protected] void QAbstractItemView::focusOutEvent(QFocusEvent *event)

QWidget::focusOutEvent(QFocusEvent *event) を再実装します。

この関数は、ウィジェットがフォーカスを失った際に、指定されたevent を引数として呼び出されます。デフォルトでは、このイベントは無視されます。

clearFocus() およびfocusInEvent()も参照してください 。

[pure virtual protected] int QAbstractItemView::horizontalOffset() const

ビューの水平方向のオフセットを返します。

基底クラスでは、これは純粋仮想関数です。

verticalOffset()も参照してください 。

[pure virtual] QModelIndex QAbstractItemView::indexAt(const QPoint &point) const

ビューポート座標point にあるアイテムのモデルインデックスを返します。

基底クラスでは、これは純粋仮想関数です。

visualRect()も参照してください 。

QWidget *QAbstractItemView::indexWidget(const QModelIndex &index) const

指定されたindex にある項目のウィジェットを返します。

setIndexWidget()も参照してください 。

[virtual protected, since 6.0] void QAbstractItemView::initViewItemOption(QStyleOptionViewItem *option) const

option 構造体を、ビューのパレット、フォント、状態、配置設定などで初期化します。

注: このメソッドの実装では 、受け取った構造体のversion を確認し、実装で認識されているすべてのメンバに値を代入し、戻り値のバージョンメンバを実装でサポートされている値に設定してから戻す必要があります。

この関数は Qt 6.0 で導入されました。

[override virtual protected] void QAbstractItemView::inputMethodEvent(QInputMethodEvent *event)

QWidget::inputMethodEvent(QInputMethodEvent *event) を再実装します。

[override virtual] QVariant QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery query) const

QWidget::inputMethodQuery (Qt::InputMethodQuery query)const を再実装します。

[pure virtual protected] bool QAbstractItemView::isIndexHidden(const QModelIndex &index) const

指定されたindex が指す項目がビュー内で非表示になっている場合はtrue を返し、そうでない場合はfalse を返します。

非表示設定はビュー固有の機能です。たとえば、TableView では列を非表示に設定でき、TreeView では行を非表示に設定できます。

基底クラスでは、これは純粋仮想関数です。

bool QAbstractItemView::isPersistentEditorOpen(const QModelIndex &index) const

インデックスindex の項目に対して、永続エディタが開かれているかどうかを返します。

openPersistentEditor() およびclosePersistentEditor()も参照してください 。

QAbstractItemDelegate *QAbstractItemView::itemDelegate() const

このビューおよびモデルで使用されるアイテムデリゲートを返します。これは、setItemDelegate() で設定されたもの、またはデフォルトのデリゲートのいずれかです。

setItemDelegate()も参照してください 。

QAbstractItemDelegate *QAbstractItemView::itemDelegateForColumn(int column) const

指定されたcolumn に対して、このビューおよびモデルで使用されているアイテムデリゲートを返します。itemDelegate() を呼び出すことで、指定されたインデックスに対する現在のデリゲートへのポインタを取得できます。

setItemDelegateForColumn()、itemDelegateForRow()、およびitemDelegate()も参照してください 。

[virtual, since 6.0] QAbstractItemDelegate *QAbstractItemView::itemDelegateForIndex(const QModelIndex &index) const

指定されたindex に対して、このビューおよびモデルで使用されているアイテムデリゲートを返します。

この関数は Qt 6.0 で導入されました。

setItemDelegate()、setItemDelegateForRow()、およびsetItemDelegateForColumn()も参照してください 。

QAbstractItemDelegate *QAbstractItemView::itemDelegateForRow(int row) const

指定されたrow に対して、このビューおよびモデルで使用されているアイテムデリゲートを返します。デリゲートが割り当てられていない場合は、nullptr を返します。itemDelegate()を呼び出すことで、指定されたインデックスに対する現在のデリゲートへのポインタを取得できます。

setItemDelegateForRow()、itemDelegateForColumn()、およびsetItemDelegate()も参照してください 。

[override virtual protected] void QAbstractItemView::keyPressEvent(QKeyEvent *event)

QAbstractScrollArea::keyPressEvent(QKeyEvent *e) を再実装します。

この関数は、ウィジェットにキーイベントが送信された際に、指定されたevent を引数として呼び出されます。 デフォルトの実装では、上、下、左、右、Home、PageUp、PageDown などの基本的なカーソル移動を処理します。現在のインデックスが有効で、アクティベーションキー(プラットフォームに応じて Enter または Return など)が押された場合、activated() シグナルが発信されます。 この関数では、F2キーが押された場合など、キーの押下によって編集が開始されます。

edit()、moveCursor()、keyboardSearch()、およびtabKeyNavigationも参照してください 。

[virtual] void QAbstractItemView::keyboardSearch(const QString &search)

文字列「search 」に最も一致する項目に移動して選択します。該当する項目が見つからない場合は、何も起こりません。

デフォルトの実装では、search が空の場合、または前回の検索からの経過時間がQApplication::keyboardInputInterval()を超えた場合、検索はリセットされます。

QAbstractItemModel *QAbstractItemView::model() const

このビューが表示しているモデルを返します。

setModel()も参照してください 。

[override virtual protected] void QAbstractItemView::mouseDoubleClickEvent(QMouseEvent *event)

QAbstractScrollArea::mouseDoubleClickEvent(QMouseEvent *e) を再実装します。

この関数は、ウィジェット内でマウスボタンがダブルクリックされた際に、指定されたevent を引数として呼び出されます。ダブルクリックが有効なアイテム上で行われた場合、doubleClicked()シグナルを発火し、そのアイテムに対してedit()を呼び出します。

[override virtual protected] void QAbstractItemView::mouseMoveEvent(QMouseEvent *event)

QAbstractScrollArea::mouseMoveEvent(QMouseEvent *e) を再実装します。

この関数は、ウィジェットにマウス移動イベントが送信された際に、指定されたevent を引数として呼び出されます。選択操作が進行中で、新しい項目が選択範囲上を移動した場合、選択範囲が拡張されます。ドラッグ操作が進行中の場合は、その操作が継続されます。

[override virtual protected] void QAbstractItemView::mousePressEvent(QMouseEvent *event)

QAbstractScrollArea::mousePressEvent(QMouseEvent *e) を再実装します。

この関数は、カーソルがウィジェット内にある状態でマウスボタンが押されたときに、指定されたevent を引数として呼び出されます。有効な項目が押された場合、その項目が現在の項目として設定されます。この関数は、pressed()シグナルを発行します。

[override virtual protected] void QAbstractItemView::mouseReleaseEvent(QMouseEvent *event)

QAbstractScrollArea::mouseReleaseEvent(QMouseEvent *e) を再実装します。

この関数は、ウィジェットでマウスクリックイベントが発生した後、マウスボタンが離された際に、指定されたevent を引数として呼び出されます。ユーザーがウィジェット内でマウスをクリックし、マウスボタンを離す前に別の位置までマウスをドラッグした場合、ウィジェットはリリースイベントを受け取ります。アイテムが押されていた場合、この関数はclicked()シグナルを発行します。

[pure virtual protected] QModelIndex QAbstractItemView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)

指定されたcursorAction およびmodifiers で指定されたキーボード修飾子に基づいて、ビュー内の次のオブジェクトを指すQModelIndex オブジェクトを返します。

基底クラスでは、これは純粋仮想関数です。

void QAbstractItemView::openPersistentEditor(const QModelIndex &index)

指定されたindex にある項目に対して、永続的なエディタを開きます。エディタが存在しない場合、デリゲートは新しいエディタを作成します。

closePersistentEditor() およびisPersistentEditorOpen()も参照してください 。

[signal] void QAbstractItemView::pressed(const QModelIndex &index)

このシグナルは、マウスボタンが押されたときに発火します。マウスが押された項目は、index で指定されます。このシグナルは、インデックスが有効な場合にのみ発火します。

マウスボタンの状態を取得するには、QGuiApplication::mouseButtons() 関数を使用します。

activated()、clicked()、doubleClicked()、およびentered()も参照してください 。

[virtual slot] void QAbstractItemView::reset()

ビューの内部状態をリセットします。

警告:この関数は 、開いているエディタ、スクロールバーの位置、選択範囲などをリセットします。既存の変更は反映されません。ビューをリセットする際に変更を保存したい場合は、この関数を再実装し、変更を反映させた上で、スーパークラスの実装を呼び出してください。

[override virtual protected] void QAbstractItemView::resizeEvent(QResizeEvent *event)

QAbstractScrollArea::resizeEvent(QResizeEvent *event) を再実装します。

ウィジェットにリサイズイベントが送信されると、指定されたevent を引数としてこの関数が呼び出されます。

QWidget::resizeEvent()も参照してください 。

QModelIndex QAbstractItemView::rootIndex() const

モデルのルート項目のモデルインデックスを返します。ルート項目とは、ビューの最上位項目の親項目です。ルートが無効な場合もあります。

setRootIndex()も参照してください 。

[virtual protected slot] void QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)

このスロットは、行が削除されようとしているときに呼び出されます。削除される行は、指定されたparent の下にある、start からend までの行(両端を含む)です。

rowsInserted()も参照してください 。

[virtual protected slot] void QAbstractItemView::rowsInserted(const QModelIndex &parent, int start, int end)

このスロットは、行が挿入されたときに呼び出されます。新しい行は、指定されたparent の範囲内(start からend までを含む)の行です。基底クラスの実装では、モデルに対してfetchMore()を呼び出し、さらにデータがあるかどうかを確認します。

rowsAboutToBeRemoved()も参照してください 。

[protected] void QAbstractItemView::scheduleDelayedItemsLayout()

イベント処理が開始されたときに実行される、ビュー内の項目のレイアウトをスケジュールします。

イベントが処理される前に scheduleDelayedItemsLayout() が複数回呼び出された場合でも、ビューのレイアウトは 1 回のみ実行されます。

executeDelayedItemsLayout()も参照してください 。

[protected] void QAbstractItemView::scrollDirtyRegion(int dx, int dy)

(dx 、dy )ピクセル分スクロールできるよう、変更された領域を反対方向に移動させてビューを準備します。この関数を呼び出す必要があるのは、ビューのサブクラスでスクロール可能なビューポートを実装している場合のみです。

QAbstractItemView のサブクラスでscrollContentsBy() を実装する場合は、ビューポートに対してQWidget::scroll() を呼び出す前に、この関数を呼び出してください。あるいは、単にupdate() を呼び出すだけでも構いません。

scrollContentsBy()、dirtyRegionOffset()、およびsetDirtyRegion()も参照してください 。

[pure virtual] void QAbstractItemView::scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint = EnsureVisible)

必要に応じてビューをスクロールし、index にある項目が表示されるようにします。ビューは、指定されたhint に従って、その項目の位置を調整しようとします。

基底クラスでは、これは純粋仮想関数です。

[slot] void QAbstractItemView::scrollToBottom()

ビューを一番下までスクロールします。

scrollTo() およびscrollToTop()も参照してください 。

[slot] void QAbstractItemView::scrollToTop()

ビューを先頭までスクロールします。

scrollTo() およびscrollToBottom()も参照してください 。

[virtual slot] void QAbstractItemView::selectAll()

ビュー内のすべての項目を選択します。この関数は、選択時にビューに設定されている選択動作を使用します。

setSelection()、selectedIndexes()、およびclearSelection()も参照してください 。

[virtual protected] QModelIndexList QAbstractItemView::selectedIndexes() const

この便利関数は、ビュー内で選択されており、かつ非表示になっていないすべての項目のインデックスをリストとして返します。このリストには重複は含まれず、ソートもされていません。

QItemSelectionModel::selectedIndexes()も参照してください 。

[virtual protected slot] void QAbstractItemView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)

このスロットは、選択内容が変更されたときに呼び出されます。以前の選択内容(空の場合もあります)は `deselected` で指定され、新しい選択内容は `selected` で指定されます。

setSelection()も参照してください 。

[virtual protected] QItemSelectionModel::SelectionFlags QAbstractItemView::selectionCommand(const QModelIndex &index, const QEvent *event = nullptr) const

指定されたindex の選択モデルを更新する際に使用されるSelectionFlagsを返します。結果は、現在のselectionMode()およびユーザー入力イベントevent (nullptr となる場合があります)に依存します。

独自の選択動作を定義するには、この関数を再実装してください。

setSelection()も参照してください 。

QItemSelectionModel *QAbstractItemView::selectionModel() const

現在の選択モデルを返します。

setSelectionModel() およびselectedIndexes()も参照してください 。

[slot] void QAbstractItemView::setCurrentIndex(const QModelIndex &index)

現在の項目を、index にある項目に設定します。

現在の選択モードがNoSelection でない限り、その項目も選択されます。なお、この関数は、ユーザーがその後行う新しい選択の開始位置も更新することに注意してください。

アイテムを選択せずに現在のアイテムとして設定するには、

selectionModel()->setCurrentIndex(index, QItemSelectionModel::NoUpdate);

currentIndex()、currentChanged()、およびselectionModeも参照してください 。

[protected] void QAbstractItemView::setDirtyRegion(const QRegion &region)

指定されたregion を「変更済み」としてマークし、更新が実行されるようスケジュールします。この関数を呼び出す必要があるのは、独自のビューサブクラスを実装している場合のみです。

scrollDirtyRegion() およびdirtyRegionOffset()も参照してください 。

void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget)

指定されたwidget を、指定されたindex にあるアイテムに設定し、ウィジェットの所有権をビューポートに渡します。

index が無効な場合(例:ルートインデックスが渡された場合など)、この関数は何も行いません。

指定されたwidget のautoFillBackground プロパティはtrueに設定されている必要があります。そうしないと、ウィジェットの背景が透明になり、モデルデータと、指定されたindex にあるアイテムの両方が表示されます。

注:ビューは widget の所有権を取得します。つまり、インデックスウィジェットAがインデックスウィジェットBに置き換えられた場合、インデックスウィジェットAは削除されます。例えば、以下のコードスニペットでは、QLineEdit オブジェクトが削除されます。

setIndexWidget(index, new QLineEdit);
...
setIndexWidget(index, new QTextEdit);

この関数は、データ項目に対応する表示領域内で静的なコンテンツを表示する場合にのみ使用してください。カスタムの動的コンテンツを表示したり、カスタムエディタウィジェットを実装したりする場合は、代わりにQStyledItemDelegate をサブクラス化してください。

「indexWidget()」および「デリゲートクラス」も参照してください 。

void QAbstractItemView::setItemDelegate(QAbstractItemDelegate *delegate)

このビューとそのモデルのアイテムデリゲートをdelegate に設定します。これは、アイテムの編集や表示を完全に制御したい場合に役立ちます。

既存デリゲートは削除されますが、消去されることはありません。QAbstractItemView はdelegate の所有権を取得しません。

警告: ビュー間で同じデリゲートのインスタンスを共有しないでください 。そうすると、特定のデリゲートに接続されている各ビューが `closeEditor()` シグナルを受信し、すでに閉じられているエディタにアクセスしたり、変更したり、閉じようとしたりするため、不正確または直感に反する編集動作を引き起こす可能性があります。

itemDelegate()も参照してください 。

void QAbstractItemView::setItemDelegateForColumn(int column, QAbstractItemDelegate *delegate)

指定されたcolumn に対して、このビューおよびモデルで使用される指定されたdelegate を設定します。column 上のすべてのアイテムは、デフォルトのデリゲート(つまり、itemDelegate()) を使用する代わりに、delegate によって描画および管理されます。

column に対して既存のカラムデリゲートがある場合は、それらは削除されますが、消去されることはありません。QAbstractItemView はdelegate の所有権を取得しません。

注: デリゲートが行と列の両方に割り当てられている場合 、行のデリゲートが優先され、交差するセルインデックスを管理します。

警告: ビュー間で同じデリゲートのインスタンスを共有してはなりません 。そうすると、特定のデリゲートに接続された各ビューが `closeEditor()` シグナルを受信し、すでに閉じられているエディタへのアクセス、変更、または閉じようとしてしまう可能性があるため、不正確または直感に反する編集動作を引き起こす恐れがあります。

関連項目: itemDelegateForColumn()、setItemDelegateForRow()、およびitemDelegate()。

void QAbstractItemView::setItemDelegateForRow(int row, QAbstractItemDelegate *delegate)

指定されたrow に対して、このビューおよびモデルで使用される指定されたdelegate を設定します。row 上のすべてのアイテムは、デフォルトのデリゲート(つまり、itemDelegate()) を使用する代わりに、delegate によって描画および管理されます。

row に対して既存の行デリゲートがある場合は、それらは削除されますが、消去されることはありません。QAbstractItemView はdelegate の所有権を取得しません。

注: デリゲートが行と列の両方に割り当てられている場合 、行のデリゲート(つまり、このデリゲート)が優先され、交差するセルインデックスを管理します。

警告: ビュー間で同じデリゲートのインスタンスを共有してはなりません 。そうすると、特定のデリゲートに接続された各ビューがcloseEditor() シグナルを受信し、すでに閉じられているエディタへのアクセス、変更、または閉じようと試みる可能性があるため、不正確または直感に反する編集動作を引き起こす可能性があります。

関連項目: itemDelegateForRow()、setItemDelegateForColumn()、およびitemDelegate()。

[virtual] void QAbstractItemView::setModel(QAbstractItemModel *model)

表示するビューのmodel を設定します。

この関数は、新しい選択モデルを作成して設定し、以前にsetSelectionModel()で設定されていたモデルを置き換えます。ただし、古い選択モデルは複数のビュー間で共有されている可能性があるため、削除されません。不要になった場合は、古い選択モデルを削除することをお勧めします。削除は次のコードで行います:

QItemSelectionModel *m = view->selectionModel();
view->setModel(new model);
delete m;

古いモデルと古い選択モデルの両方に親が存在しない場合、またはそれらの親が長寿命のオブジェクトである場合は、deleteLater() 関数を呼び出して明示的に削除する方が望ましい場合があります。

モデルは多くの異なるビュー間で共有される可能性があるため、ビューは、そのビューがモデルの親オブジェクトでない限り、モデルの所有権を取得しません。

model()、selectionModel()、およびsetSelectionModel()も参照してください 。

[virtual slot] void QAbstractItemView::setRootIndex(const QModelIndex &index)

指定されたindex にあるアイテムをルートアイテムとして設定します。

rootIndex()も参照してください 。

[pure virtual protected] void QAbstractItemView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags)

矩形(rect )内の、またはその矩形に接触している項目に対して、選択処理 `flags ` を適用します。

独自のアイテムビューを実装する場合、setSelection メソッドではselectionModel()->select(selection, flags) を呼び出す必要があります。ここで、selection は空のQModelIndex であるか、rect に含まれるすべてのアイテムを含むQItemSelection のいずれかです。

selectionCommand() およびselectedIndexes()も参照してください 。

[virtual] void QAbstractItemView::setSelectionModel(QItemSelectionModel *selectionModel)

現在の選択モデルを、指定されたselectionModel に設定します。

なお、この関数の後にsetModel()を呼び出した場合、指定されたselectionModel は、ビューによって作成されたものに置き換えられます。

注: 古い選択モデルが不要になった場合、つまり他のビューで使用されなくなった場合、そのモデルを削除するかどうかは アプリケーション次第です 。 親オブジェクトが削除されると、これは自動的に行われます。ただし、親オブジェクトがない場合や、親オブジェクトが長寿命のオブジェクトである場合は、deleteLater() 関数を呼び出して明示的に削除した方が望ましい場合があります。

selectionModel()、setModel()、およびclearSelection()も参照してください 。

[protected] void QAbstractItemView::setState(QAbstractItemView::State state)

アイテムビューの状態を、指定されたstate に設定します。

state()も参照してください 。

[virtual] int QAbstractItemView::sizeHintForColumn(int column) const

指定されたcolumn の幅に関するサイズヒントを返します。モデルが存在しない場合は-1を返します。

この関数は、水平ヘッダーを持つビューにおいて、指定されたcolumn の内容に基づいてヘッダーセクションのサイズヒントを取得するために使用されます。

sizeHintForRow()も参照してください 。

QSize QAbstractItemView::sizeHintForIndex(const QModelIndex &index) const

指定されたindex を持つ項目のサイズヒントを返すか、無効なインデックスの場合は無効なサイズを返す。

sizeHintForRow() およびsizeHintForColumn()も参照してください 。

[virtual] int QAbstractItemView::sizeHintForRow(int row) const

指定されたrow の高さサイズヒントを返します。モデルが存在しない場合は-1を返します。

返される高さは、指定されたrow の項目のサイズヒントを用いて計算されます。つまり、返される値は各項目の中で最も高い高さとなります。行の高さを制御するには、QAbstractItemDelegate::sizeHint()関数を再実装する必要があることに注意してください。

この関数は、垂直ヘッダーを持つビューにおいて、指定されたrow の内容に基づいてヘッダーセクションのサイズヒントを取得するために使用されます。

sizeHintForColumn()も参照してください 。

[virtual protected] void QAbstractItemView::startDrag(Qt::DropActions supportedActions)

指定されたsupportedActions を使用して、drag->exec()を呼び出し、ドラッグを開始します。

[protected] QAbstractItemView::State QAbstractItemView::state() const

アイテムビューの状態を返します。

setState()も参照してください 。

[override virtual protected] void QAbstractItemView::timerEvent(QTimerEvent *event)

QObject::timerEvent(QTimerEvent *event) を再実装します。

この関数は、ウィジェットにタイマーイベントが送信された際に、指定されたevent を引数として呼び出されます。

QObject::timerEvent()も参照してください 。

[slot] void QAbstractItemView::update(const QModelIndex &index)

指定されたindex が占める領域を更新します。

[virtual protected slot] void QAbstractItemView::updateGeometries()

ビューの子ウィジェットのジオメトリを更新します。

[pure virtual protected] int QAbstractItemView::verticalOffset() const

ビューの垂直方向のオフセットを返します。

基底クラスでは、これは純粋仮想関数です。

horizontalOffset()も参照してください 。

[signal] void QAbstractItemView::viewportEntered()

このシグナルは、マウスカーソルがビューポートに入ったときに発生します。この機能が動作するには、マウス追跡が有効になっている必要があります。

entered()も参照してください 。

[override virtual protected] bool QAbstractItemView::viewportEvent(QEvent *event)

QAbstractScrollArea::viewportEvent(QEvent *event) を再実装します。

この関数は、指定されたevent がQEvent::ToolTip またはQEvent::WhatsThis である場合、ツールチップおよび「What's This?」モードの処理に使用されます。それ以外のすべてのイベントは、基底クラスのviewportEvent()ハンドラに転送されます。

event が認識され処理された場合はtrue を返し、それ以外の場合はfalse を返します。

[override virtual protected] QSize QAbstractItemView::viewportSizeHint() const

QAbstractScrollArea::viewportSizeHint() const を再実装します。

[pure virtual] QRect QAbstractItemView::visualRect(const QModelIndex &index) const

index における、そのアイテムがビューポート上で占める矩形を返します。

アイテムが複数の領域にまたがって表示されている場合、visualRect は、index が含まれる可能性のある領域全体ではなく、index を含む主要な領域を返す必要があります。

基底クラスでは、これは純粋仮想関数です。

indexAt() およびvisualRegionForSelection()も参照してください 。

[pure virtual protected] QRegion QAbstractItemView::visualRegionForSelection(const QItemSelection &selection) const

指定されたselection 内のアイテムのビューポートから領域を返します。

基底クラスでは、これは純粋仮想関数です。

visualRect() およびselectedIndexes()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.