VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
treeWidget.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 
9 #pragma once
10 
13 
16 
17 #include <QtWidgets/QTreeWidget>
18 #include <QtWidgets/QListWidget>
19 #include <QtGui/QKeyEvent>
20 
21 #include <vlutil/vlPerformanceStats.h>
22 
23 class QMimeData;
24 
25 namespace makVrv
26 {
27  class DtDe;
28 }
29 
30 namespace makVrf
31 {
33  static const int DtUserRoleForDoubleClickEdit = Qt::UserRole + 100;
34 
36  {
37  Q_OBJECT
38 
39  public:
41  DtTreeWidget(makVrv::DtDe& de, QWidget* parent);
42 
44  virtual ~DtTreeWidget() override;
45 
47  virtual QTreeWidgetItem* lastItem() const;
48 
50  QTreeWidgetItem* itemFromIndex(const QModelIndex& idx) { return QTreeWidget::itemFromIndex(idx); };
51 
53  QModelIndex indexFromItem(QTreeWidgetItem *item, int column = 0) const
54  {
55  return QTreeWidget::indexFromItem(item, column);
56  }
57 
59  virtual void setMinimumSizeHint(const QSize&);
60  virtual QSize minimumSizeHint() const override;
61 
63  virtual void setSizeHint(const QSize& s) { mySizeHint = s; };
64 
66  virtual int indexOfChild(QTreeWidgetItem*) const;
67 
69  unsigned int depth(QTreeWidgetItem*) const;
70 
72  QTreeWidgetItem* nextSibling(QTreeWidgetItem*) const;
73 
75  void setAllowEmptySelection(bool);
76 
78  bool allowEmptySelection() const;
79 
81  virtual bool edit(const QModelIndex& index, EditTrigger trigger, QEvent* event) override;
82  virtual void closeEditor(QWidget* editor, QAbstractItemDelegate::EndEditHint hint) override;
83 
84  virtual void itemRightClickedOn(QTreeWidgetItem*, QMouseEvent*, int col);
85 
87  virtual void mousePressEvent(QMouseEvent* event) override;
88 
90  virtual void mouseDoubleClickEvent(QMouseEvent* event) override;
91 
93  virtual void mouseReleaseEvent(QMouseEvent* event) override;
94 
95  virtual void itemLeftClickedOn(QTreeWidgetItem*, QMouseEvent*, int);
96 
97  virtual bool editingCanceled() const { return myEditingCanceled; };
98 
101  virtual void setAllowWindowsStyleNameEdit(bool);
103  {
104  return myAllowWindowsStyleNameEdit;
105  }
106 
108  virtual void setDisableNameEditIfNotWindowsStyleEdit(bool);
110  {
111  return myDisableNameEditIfNotWindowsStyleEnabled;
112  }
113 
114  virtual void setEditPressTime(double);
115  double editPressTime() const
116  {
117  return myEditPressTime;
118  }
120 
121  QItemSelectionModel::SelectionFlags lastSelectionCommand() const
122  {
123  return myLastSelectionCommand;
124  }
125 
127  {
128  return myLastSelectHadControlKeyDown;
129  }
130 
131  signals:
132 
135  void mouseLeftPressed(QTreeWidgetItem*, QMouseEvent*, int col);
136 
138  void rightClickOnItem(QTreeWidgetItem*, QMouseEvent*, int col);
139 
141  void contentsMoving(int, int);
142 
143  protected slots:
144  virtual void checkForEdit();
145 
146  protected:
147 
149  virtual void scrollContentsBy(int, int) override;
150 
152  virtual QSize sizeHint() const override;
153 
155  virtual QItemSelectionModel::SelectionFlags selectionCommand(
156  const QModelIndex& index, const QEvent* event = 0) const override;
157 
159  virtual QItemSelectionModel::SelectionFlags selectionBehaviorFlags() const;
160 
161  protected:
162 
170  QSize mySizeHint;
175  mutable QItemSelectionModel::SelectionFlags myLastSelectionCommand;
177  };
178 
180  {
182  }
183 
185  {
186  return myAllowEmptySelection;
187  }
188 
191  {
192  public:
195 
196  virtual void manageIcon(int column, const std::string&, const QSize& size = QSize());
197  virtual void unmanageIcon(int column);
198  virtual void unmanageAllIcons();
199  virtual bool managingColumn(int i) const;
200  virtual std::pair<std::string, QSize> managedIcon(int i) const;
201 
202  virtual QVariant data(int col, int role) const override;
203 
204  protected:
205  std::map<int, std::pair<std::string, QSize> > myManagedIcons;
207  };
208 
211  {
212  public:
215 
216  virtual DtThemedTreeWidgetItem* create(QTreeWidget* parent = nullptr);
217  virtual DtThemedTreeWidgetItem* create(QTreeWidgetItem* parent);
218 
219  static DtThemedTreeWidgetItemCreator& instance(makVrv::DtDe& de);
220  static void registerInstance(makVrv::DtDe& de, DtThemedTreeWidgetItemCreator*);
221 
222  protected:
224  };
225 
228  {
229  public:
230  DtThemedListWidgetItem(makVrv::DtDe& de, QListWidget* t = nullptr);
231 
232  virtual void manageIcon(const std::string&);
233  virtual void unmanageIcon();
234 
235  virtual QVariant data(int role) const override;
236 
237  protected:
238  std::string myManagedIcon;
240  };
241 
244  {
245  public:
248 
249  virtual DtThemedListWidgetItem* create(QListWidget* parent = nullptr);
250 
251  static DtThemedListWidgetItemCreator& instance(makVrv::DtDe& de);
252  static void registerInstance(makVrv::DtDe& de, DtThemedListWidgetItemCreator*);
253 
254  protected:
256  };
257 }
bool lastSelectHadControlKeyDown() const
Definition: treeWidget.h:126
QModelIndex indexFromItem(QTreeWidgetItem *item, int column=0) const
Definition: treeWidget.h:53
Definition: treeWidget.h:35
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
Registered creator for this class.
Definition: treeWidget.h:210
bool myDisableNameEditIfNotWindowsStyleEnabled
Definition: treeWidget.h:174
makVrv::DtDe & myDe
Definition: treeWidget.h:206
QSize mySizeHint
Definition: treeWidget.h:170
voidpf void uLong size
Definition: ioapi.h:39
bool allowWindowsStyleNameEdit() const
Support for editing (on items that support it) a single press, then, a single press on the item again...
Definition: treeWidget.h:102
makVrv::DtDe & myDe
Definition: treeWidget.h:167
QTreeWidgetItem * itemFromIndex(const QModelIndex &idx)
Definition: treeWidget.h:50
bool myNextReleaseMightBeEdit
Definition: treeWidget.h:171
virtual void setSizeHint(const QSize &s)
Sets the size hint in absence of minimum size.
Definition: treeWidget.h:63
bool allowEmptySelection() const
Definition: treeWidget.h:184
makVrv::DtDe & myDe
Definition: treeWidget.h:239
double myEditPressTime
Definition: treeWidget.h:166
std::string myManagedIcon
Definition: treeWidget.h:238
bool myLastSelectHadControlKeyDown
Definition: treeWidget.h:176
bool myMouseRightClick
Definition: treeWidget.h:163
Contains makVrv::DtVirtualBaseClass class.
bool myLastEditEventWasDoubleClick
Definition: treeWidget.h:173
bool disableNameEditIfNotWindowsStyleEnabled() const
Support for editing (on items that support it) a single press, then, a single press on the item again...
Definition: treeWidget.h:109
#define DT_DLL_VRFGUICOMMONQT
Definition: vrfGuiCommonQt.h:20
std::map< int, std::pair< std::string, QSize > > myManagedIcons
Definition: treeWidget.h:205
bool myAllowWindowsStyleNameEdit
Definition: treeWidget.h:165
static const int DtUserRoleForDoubleClickEdit
If in myAllowWindowsStyleNameEdit mode, set this user role in data column 0 to support double click e...
Definition: treeWidget.h:33
bool myEditingCanceled
Definition: treeWidget.h:168
bool myAllowEmptySelection
Definition: treeWidget.h:164
Allows for setting of icons that will switch with the theme.
Definition: treeWidget.h:190
Registered creator for this class.
Definition: treeWidget.h:243
QItemSelectionModel::SelectionFlags myLastSelectionCommand
Definition: treeWidget.h:175
Allows for setting of icons that will switch with the theme.
Definition: treeWidget.h:227
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:76
QTreeWidgetItem * myCheckForEditAfterTimer
Definition: treeWidget.h:172
makVrv::DtDe & myDe
Definition: treeWidget.h:255
void setAllowEmptySelection(bool)
Only valid in single selection mode.
Definition: treeWidget.h:179
QItemSelectionModel::SelectionFlags lastSelectionCommand() const
Definition: treeWidget.h:121
QSize myMinimumSizeHint
Definition: treeWidget.h:169
makVrv::DtDe & myDe
Definition: treeWidget.h:223
double editPressTime() const
Support for editing (on items that support it) a single press, then, a single press on the item again...
Definition: treeWidget.h:115
virtual bool editingCanceled() const
Definition: treeWidget.h:97

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)