Qt5 QListViewのダブルクリック編集を無効にする
最近Qt5を触ってるのでそのメモ。
QListViewにQStringListModelを突っ込み、リストビューを作るのはそんなに難しくない。
#include "mainwindow.h" #include <QLayout> #include <QString> #include <QStringListModel> MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { QListView *listView; //QListViewを生成,ここにlistModelを追加していく listView = new QListView(); Q_CHECK_PTR(listView); //listItemTextに文字をセットする QStringList listItemText; listItemText << "001"; listItemText << "002"; listItemText << "003"; QStringListModel *model; model = new QStringListModel(); //モデルにlistItemTextを追加する model->setStringList(listItemText); //listViewにmodelをセット listView->setModel(model); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(listView); setLayout(mainLayout); setWindowTitle(tr("ListViewTest")); }
実行するとこんな感じ。
ただこのままでは一つ問題があって、要素をダブルクリックすると中身を書き換えることができてしまう。
これを解決するには、下の1行が必要。
listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
これでダブルクリック編集が無効になる。
参考サイト
http://doc.qt.io/archives/qt-4.8/qabstractitemview.html#EditTrigger-enum https://stackoverflow.com/questions/6226185/uneditable-qlistview
しかしQtの公式ドキュメントは本当に充実している。UE4もこれぐらいドキュメント使いやすくしてほしいなあ。