私のプロジェクトでは、QTreeView
の項目をQStandardItemModel
から表示しています。各項目には、複数のUserRolesに格納されたデータがあります。QTreeViewダブルクリック時にDisplayRoleの代わりにUserRoleを編集する
QStandardItem* item = new QStandardItem();
item->setIcon(iconByte);
item->setData(3, Qt::UserRole+1);
item->setData(name, Qt::UserRole+2);
item->setData(data, Qt::UserRole+3);
... and so on
ユーザーが項目をダブルクリックすると、2行の編集を含むダイアログが表示され、ユーザーはUserRoleデータの一部を編集できます。編集が終了すると、編集内容がロジックを介して実行され、新しいUserRoleデータに基づいて表示名が生成されます。
しかし、これは非常に面倒です。ダイアログが絶えずポップアップしていて、それは遅くて醜い解決策です。
これで、ダイアログを完全に削除して、アイテム自体の中に行編集ウィジェットを表示したいと思います。デフォルトでは、編集するアイテムをダブルクリックすると、1行編集ウィジェットだけが表示され、DISPLAYロールが変更されます。しかし、私は2つの行の編集を2つのUSERの役割を変更する必要があります。そして、通常のロジックが続く。
QTreeView
の編集項目部分を変更するにはどうすればよいですか?
ありがとうございました!
列はオプションではありません。表示テキストは必ずしも2つのユーザロールのデータではありません。 – mrg95