VirtualBox

Changeset 74042 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Sep 3, 2018 12:54:45 PM (6 years ago)
Author:
vboxsync
Message:

FE/Qt: VirtualBox Manager UI: Large cleanup for UIDetailsGroup, doxygen + style fixes.

Location:
trunk/src/VBox/Frontends/VirtualBox/src/manager/details
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsGroup.cpp

    r73424 r74042  
    55
    66/*
    7  * Copyright (C) 2012-2017 Oracle Corporation
     7 * Copyright (C) 2012-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    2626/* GUI includes: */
    2727# include "UIDetailsGroup.h"
     28# include "UIDetailsModel.h"
    2829# include "UIDetailsSet.h"
    29 # include "UIDetailsModel.h"
    3030# include "UIExtraDataManager.h"
     31# include "UIVirtualMachineItem.h"
    3132# include "VBoxGlobal.h"
    32 # include "UIVirtualMachineItem.h"
    3333
    3434#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
     
    3737UIDetailsGroup::UIDetailsGroup(QGraphicsScene *pParent)
    3838    : UIDetailsItem(0)
     39    , m_pBuildStep(0)
    3940    , m_iPreviousMinimumWidthHint(0)
    4041    , m_iPreviousMinimumHeightHint(0)
    41     , m_pBuildStep(0)
    4242{
    4343    /* Add group to the parent scene: */
     
    8989}
    9090
    91 void UIDetailsGroup::sltBuildStep(QString strStepId, int iStepNumber)
    92 {
    93     /* Cleanup build-step: */
    94     delete m_pBuildStep;
    95     m_pBuildStep = 0;
    96 
    97     /* Is step id valid? */
    98     if (strStepId != m_strGroupId)
    99         return;
    100 
    101     /* Step number feats the bounds: */
    102     if (iStepNumber >= 0 && iStepNumber < m_machineItems.size())
    103     {
    104         /* Should we create a new set for this step? */
    105         UIDetailsSet *pSet = 0;
    106         if (iStepNumber > m_items.size() - 1)
    107             pSet = new UIDetailsSet(this);
    108         /* Or use existing? */
    109         else
    110             pSet = m_items.at(iStepNumber)->toSet();
    111 
    112         /* Create next build-step: */
    113         m_pBuildStep = new UIPrepareStep(this, pSet, strStepId, iStepNumber + 1);
    114 
    115         /* Build set: */
    116         pSet->buildSet(m_machineItems[iStepNumber], m_machineItems.size() == 1, model()->settings());
    117     }
    118     else
    119     {
    120         /* Notify listener about build done: */
    121         emit sigBuildDone();
    122     }
    123 }
    124 
    125 QVariant UIDetailsGroup::data(int iKey) const
    126 {
    127     /* Provide other members with required data: */
    128     switch (iKey)
    129     {
    130         /* Layout hints: */
    131         case GroupData_Margin: return QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 6;
    132         case GroupData_Spacing: return QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 2;
    133         /* Default: */
    134         default: break;
    135     }
    136     return QVariant();
    137 }
    138 
    139 void UIDetailsGroup::addItem(UIDetailsItem *pItem)
    140 {
    141     switch (pItem->type())
    142     {
    143         case UIDetailsItemType_Set: m_items.append(pItem); break;
    144         default: AssertMsgFailed(("Invalid item type!")); break;
    145     }
    146 }
    147 
    148 void UIDetailsGroup::removeItem(UIDetailsItem *pItem)
    149 {
    150     switch (pItem->type())
    151     {
    152         case UIDetailsItemType_Set: m_items.removeAt(m_items.indexOf(pItem)); break;
    153         default: AssertMsgFailed(("Invalid item type!")); break;
    154     }
    155 }
    156 
    157 QList<UIDetailsItem*> UIDetailsGroup::items(UIDetailsItemType type /* = UIDetailsItemType_Set */) const
    158 {
    159     switch (type)
     91QList<UIDetailsItem*> UIDetailsGroup::items(UIDetailsItemType enmType /* = UIDetailsItemType_Set */) const
     92{
     93    switch (enmType)
    16094    {
    16195        case UIDetailsItemType_Set: return m_items;
     
    16498    }
    16599    return QList<UIDetailsItem*>();
    166 }
    167 
    168 bool UIDetailsGroup::hasItems(UIDetailsItemType type /* = UIDetailsItemType_Set */) const
    169 {
    170     switch (type)
    171     {
    172         case UIDetailsItemType_Set: return !m_items.isEmpty();
    173         case UIDetailsItemType_Any: return hasItems(UIDetailsItemType_Set);
    174         default: AssertMsgFailed(("Invalid item type!")); break;
    175     }
    176     return false;
    177 }
    178 
    179 void UIDetailsGroup::clearItems(UIDetailsItemType type /* = UIDetailsItemType_Set */)
    180 {
    181     switch (type)
    182     {
    183         case UIDetailsItemType_Set: while (!m_items.isEmpty()) { delete m_items.last(); } break;
    184         case UIDetailsItemType_Any: clearItems(UIDetailsItemType_Set); break;
    185         default: AssertMsgFailed(("Invalid item type!")); break;
    186     }
    187 }
    188 
    189 void UIDetailsGroup::prepareConnections()
    190 {
    191     /* Prepare group-item connections: */
    192     connect(this, SIGNAL(sigMinimumWidthHintChanged(int)),
    193             model(), SIGNAL(sigRootItemMinimumWidthHintChanged(int)));
    194     connect(this, SIGNAL(sigMinimumHeightHintChanged(int)),
    195             model(), SIGNAL(sigRootItemMinimumHeightHintChanged(int)));
    196 }
    197 
    198 void UIDetailsGroup::updateGeometry()
    199 {
    200     /* Call to base class: */
    201     UIDetailsItem::updateGeometry();
    202 
    203     /* Group-item should notify details-view if minimum-width-hint was changed: */
    204     int iMinimumWidthHint = minimumWidthHint();
    205     if (m_iPreviousMinimumWidthHint != iMinimumWidthHint)
    206     {
    207         /* Save new minimum-width-hint, notify listener: */
    208         m_iPreviousMinimumWidthHint = iMinimumWidthHint;
    209         emit sigMinimumWidthHintChanged(m_iPreviousMinimumWidthHint);
    210     }
    211     /* Group-item should notify details-view if minimum-height-hint was changed: */
    212     int iMinimumHeightHint = minimumHeightHint();
    213     if (m_iPreviousMinimumHeightHint != iMinimumHeightHint)
    214     {
    215         /* Save new minimum-height-hint, notify listener: */
    216         m_iPreviousMinimumHeightHint = iMinimumHeightHint;
    217         emit sigMinimumHeightHintChanged(m_iPreviousMinimumHeightHint);
    218     }
    219 }
    220 
    221 int UIDetailsGroup::minimumWidthHint() const
    222 {
    223     /* Prepare variables: */
    224     int iMargin = data(GroupData_Margin).toInt();
    225     int iMinimumWidthHint = 0;
    226 
    227     /* For each the set we have: */
    228     bool fHasItems = false;
    229     foreach (UIDetailsItem *pItem, items())
    230     {
    231         /* Ignore which are with no details: */
    232         if (UIDetailsSet *pSetItem = pItem->toSet())
    233             if (!pSetItem->hasDetails())
    234                 continue;
    235         /* And take into account all the others: */
    236         iMinimumWidthHint = qMax(iMinimumWidthHint, pItem->minimumWidthHint());
    237         if (!fHasItems)
    238             fHasItems = true;
    239     }
    240 
    241     /* Add two margins finally: */
    242     if (fHasItems)
    243         iMinimumWidthHint += 2 * iMargin;
    244 
    245     /* Return result: */
    246     return iMinimumWidthHint;
    247 }
    248 
    249 int UIDetailsGroup::minimumHeightHint() const
    250 {
    251     /* Prepare variables: */
    252     int iMargin = data(GroupData_Margin).toInt();
    253     int iSpacing = data(GroupData_Spacing).toInt();
    254     int iMinimumHeightHint = 0;
    255 
    256     /* For each the set we have: */
    257     bool fHasItems = false;
    258     foreach (UIDetailsItem *pItem, items())
    259     {
    260         /* Ignore which are with no details: */
    261         if (UIDetailsSet *pSetItem = pItem->toSet())
    262             if (!pSetItem->hasDetails())
    263                 continue;
    264         /* And take into account all the others: */
    265         iMinimumHeightHint += (pItem->minimumHeightHint() + iSpacing);
    266         if (!fHasItems)
    267             fHasItems = true;
    268     }
    269     /* Minus last spacing: */
    270     if (fHasItems)
    271         iMinimumHeightHint -= iSpacing;
    272 
    273     /* Add two margins finally: */
    274     if (fHasItems)
    275         iMinimumHeightHint += 2 * iMargin;
    276 
    277     /* Return result: */
    278     return iMinimumHeightHint;
    279100}
    280101
     
    306127}
    307128
     129void UIDetailsGroup::sltBuildStep(QString strStepId, int iStepNumber)
     130{
     131    /* Cleanup build-step: */
     132    delete m_pBuildStep;
     133    m_pBuildStep = 0;
     134
     135    /* Is step id valid? */
     136    if (strStepId != m_strGroupId)
     137        return;
     138
     139    /* Step number feats the bounds: */
     140    if (iStepNumber >= 0 && iStepNumber < m_machineItems.size())
     141    {
     142        /* Should we create a new set for this step? */
     143        UIDetailsSet *pSet = 0;
     144        if (iStepNumber > m_items.size() - 1)
     145            pSet = new UIDetailsSet(this);
     146        /* Or use existing? */
     147        else
     148            pSet = m_items.at(iStepNumber)->toSet();
     149
     150        /* Create next build-step: */
     151        m_pBuildStep = new UIPrepareStep(this, pSet, strStepId, iStepNumber + 1);
     152
     153        /* Build set: */
     154        pSet->buildSet(m_machineItems[iStepNumber], m_machineItems.size() == 1, model()->settings());
     155    }
     156    else
     157    {
     158        /* Notify listener about build done: */
     159        emit sigBuildDone();
     160    }
     161}
     162
     163void UIDetailsGroup::addItem(UIDetailsItem *pItem)
     164{
     165    switch (pItem->type())
     166    {
     167        case UIDetailsItemType_Set: m_items.append(pItem); break;
     168        default: AssertMsgFailed(("Invalid item type!")); break;
     169    }
     170}
     171
     172void UIDetailsGroup::removeItem(UIDetailsItem *pItem)
     173{
     174    switch (pItem->type())
     175    {
     176        case UIDetailsItemType_Set: m_items.removeAt(m_items.indexOf(pItem)); break;
     177        default: AssertMsgFailed(("Invalid item type!")); break;
     178    }
     179}
     180
     181bool UIDetailsGroup::hasItems(UIDetailsItemType enmType /* = UIDetailsItemType_Set */) const
     182{
     183    switch (enmType)
     184    {
     185        case UIDetailsItemType_Set: return !m_items.isEmpty();
     186        case UIDetailsItemType_Any: return hasItems(UIDetailsItemType_Set);
     187        default: AssertMsgFailed(("Invalid item type!")); break;
     188    }
     189    return false;
     190}
     191
     192void UIDetailsGroup::clearItems(UIDetailsItemType enmType /* = UIDetailsItemType_Set */)
     193{
     194    switch (enmType)
     195    {
     196        case UIDetailsItemType_Set: while (!m_items.isEmpty()) { delete m_items.last(); } break;
     197        case UIDetailsItemType_Any: clearItems(UIDetailsItemType_Set); break;
     198        default: AssertMsgFailed(("Invalid item type!")); break;
     199    }
     200}
     201
     202void UIDetailsGroup::updateGeometry()
     203{
     204    /* Call to base class: */
     205    UIDetailsItem::updateGeometry();
     206
     207    /* Group-item should notify details-view if minimum-width-hint was changed: */
     208    int iMinimumWidthHint = minimumWidthHint();
     209    if (m_iPreviousMinimumWidthHint != iMinimumWidthHint)
     210    {
     211        /* Save new minimum-width-hint, notify listener: */
     212        m_iPreviousMinimumWidthHint = iMinimumWidthHint;
     213        emit sigMinimumWidthHintChanged(m_iPreviousMinimumWidthHint);
     214    }
     215    /* Group-item should notify details-view if minimum-height-hint was changed: */
     216    int iMinimumHeightHint = minimumHeightHint();
     217    if (m_iPreviousMinimumHeightHint != iMinimumHeightHint)
     218    {
     219        /* Save new minimum-height-hint, notify listener: */
     220        m_iPreviousMinimumHeightHint = iMinimumHeightHint;
     221        emit sigMinimumHeightHintChanged(m_iPreviousMinimumHeightHint);
     222    }
     223}
     224
     225int UIDetailsGroup::minimumWidthHint() const
     226{
     227    /* Prepare variables: */
     228    int iMargin = data(GroupData_Margin).toInt();
     229    int iMinimumWidthHint = 0;
     230
     231    /* For each the set we have: */
     232    bool fHasItems = false;
     233    foreach (UIDetailsItem *pItem, items())
     234    {
     235        /* Ignore which are with no details: */
     236        if (UIDetailsSet *pSetItem = pItem->toSet())
     237            if (!pSetItem->hasDetails())
     238                continue;
     239        /* And take into account all the others: */
     240        iMinimumWidthHint = qMax(iMinimumWidthHint, pItem->minimumWidthHint());
     241        if (!fHasItems)
     242            fHasItems = true;
     243    }
     244
     245    /* Add two margins finally: */
     246    if (fHasItems)
     247        iMinimumWidthHint += 2 * iMargin;
     248
     249    /* Return result: */
     250    return iMinimumWidthHint;
     251}
     252
     253int UIDetailsGroup::minimumHeightHint() const
     254{
     255    /* Prepare variables: */
     256    int iMargin = data(GroupData_Margin).toInt();
     257    int iSpacing = data(GroupData_Spacing).toInt();
     258    int iMinimumHeightHint = 0;
     259
     260    /* For each the set we have: */
     261    bool fHasItems = false;
     262    foreach (UIDetailsItem *pItem, items())
     263    {
     264        /* Ignore which are with no details: */
     265        if (UIDetailsSet *pSetItem = pItem->toSet())
     266            if (!pSetItem->hasDetails())
     267                continue;
     268        /* And take into account all the others: */
     269        iMinimumHeightHint += (pItem->minimumHeightHint() + iSpacing);
     270        if (!fHasItems)
     271            fHasItems = true;
     272    }
     273    /* Minus last spacing: */
     274    if (fHasItems)
     275        iMinimumHeightHint -= iSpacing;
     276
     277    /* Add two margins finally: */
     278    if (fHasItems)
     279        iMinimumHeightHint += 2 * iMargin;
     280
     281    /* Return result: */
     282    return iMinimumHeightHint;
     283}
     284
     285void UIDetailsGroup::prepareConnections()
     286{
     287    /* Prepare group-item connections: */
     288    connect(this, SIGNAL(sigMinimumWidthHintChanged(int)),
     289            model(), SIGNAL(sigRootItemMinimumWidthHintChanged(int)));
     290    connect(this, SIGNAL(sigMinimumHeightHintChanged(int)),
     291            model(), SIGNAL(sigRootItemMinimumHeightHintChanged(int)));
     292}
     293
     294QVariant UIDetailsGroup::data(int iKey) const
     295{
     296    /* Provide other members with required data: */
     297    switch (iKey)
     298    {
     299        /* Layout hints: */
     300        case GroupData_Margin: return QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 6;
     301        case GroupData_Spacing: return QApplication::style()->pixelMetric(QStyle::PM_SmallIconSize) / 2;
     302        /* Default: */
     303        default: break;
     304    }
     305    return QVariant();
     306}
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsGroup.h

    r73424 r74042  
    55
    66/*
    7  * Copyright (C) 2012-2017 Oracle Corporation
     7 * Copyright (C) 2012-2018 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    1616 */
    1717
    18 #ifndef __UIDetailsGroup_h__
    19 #define __UIDetailsGroup_h__
     18#ifndef ___UIDetailsGroup_h___
     19#define ___UIDetailsGroup_h___
    2020
    2121/* GUI includes: */
     
    2323
    2424/* Forward declarations: */
     25class QGraphicsScene;
    2526class UIVirtualMachineItem;
    26 class QGraphicsScene;
    2727
    28 /* Details group
    29  * for graphics details model/view architecture: */
     28/** UIDetailsItem extension implementing group item. */
    3029class UIDetailsGroup : public UIDetailsItem
    3130{
     
    3433signals:
    3534
    36     /* Notifiers: Size-hint stuff: */
    37     void sigMinimumWidthHintChanged(int iMinimumWidthHint);
    38     void sigMinimumHeightHintChanged(int iMinimumHeightHint);
     35    /** @name Layout stuff.
     36      * @{ */
     37        /** Notifies listeners about @a iMinimumWidthHint changed. */
     38        void sigMinimumWidthHintChanged(int iMinimumWidthHint);
     39        /** Notifies listeners about @a iMinimumHeightHint changed. */
     40        void sigMinimumHeightHintChanged(int iMinimumHeightHint);
     41    /** @} */
    3942
    4043public:
    4144
    42     /* Graphics-item type: */
     45    /** RTTI item type. */
    4346    enum { Type = UIDetailsItemType_Group };
    44     int type() const { return Type; }
    4547
    46     /* Constructor/destructor: */
    47     UIDetailsGroup(QGraphicsScene *pParent);
     48    /** Constructs group item, passing pScene to the base-class. */
     49    UIDetailsGroup(QGraphicsScene *pScene);
     50    /** Destructs group item. */
    4851    ~UIDetailsGroup();
    4952
    50     /* API: Build stuff: */
    51     void buildGroup(const QList<UIVirtualMachineItem*> &machineItems);
    52     void rebuildGroup();
    53     void stopBuildingGroup();
     53    /** @name Item stuff.
     54      * @{ */
     55        /** Builds group based on passed @a machineItems. */
     56        void buildGroup(const QList<UIVirtualMachineItem*> &machineItems);
     57        /** Builds group based on cached machine items. */
     58        void rebuildGroup();
     59        /** Stops currently building group. */
     60        void stopBuildingGroup();
     61    /** @} */
    5462
    55 private slots:
     63    /** @name Children stuff.
     64      * @{ */
     65        /** Returns children items of certain @a enmType. */
     66        virtual QList<UIDetailsItem*> items(UIDetailsItemType enmType = UIDetailsItemType_Set) const /* override */;
     67    /** @} */
    5668
    57     /* Handler: Build stuff: */
    58     void sltBuildStep(QString strStepId, int iStepNumber);
     69    /** @name Layout stuff.
     70      * @{ */
     71        /** Updates layout. */
     72        virtual void updateLayout() /* override */;
     73    /** @} */
     74
     75protected slots:
     76
     77    /** @name Item stuff.
     78      * @{ */
     79        /** Handles request about starting step build.
     80          * @param  strStepId    Brings the step ID.
     81          * @param  iStepNumber  Brings the step number. */
     82    /** @} */
     83    virtual void sltBuildStep(QString strStepId, int iStepNumber) /* override */;
     84
     85protected:
     86
     87    /** @name Item stuff.
     88      * @{ */
     89        /** Returns RTTI item type. */
     90        virtual int type() const /* override */ { return Type; }
     91
     92        /** Returns the description of the item. */
     93        virtual QString description() const /* override */ { return QString(); }
     94    /** @} */
     95
     96    /** @name Children stuff.
     97      * @{ */
     98        /** Adds child @a pItem. */
     99        virtual void addItem(UIDetailsItem *pItem) /* override */;
     100        /** Removes child @a pItem. */
     101        virtual void removeItem(UIDetailsItem *pItem) /* override */;
     102
     103        /** Returns whether there are children items of certain @a enmType. */
     104        virtual bool hasItems(UIDetailsItemType enmType = UIDetailsItemType_Set) const /* override */;
     105        /** Clears children items of certain @a enmType. */
     106        virtual void clearItems(UIDetailsItemType enmType = UIDetailsItemType_Set) /* override */;
     107    /** @} */
     108
     109    /** @name Layout stuff.
     110      * @{ */
     111        /** Updates geometry. */
     112        virtual void updateGeometry() /* override */;
     113
     114        /** Returns minimum width-hint. */
     115        virtual int minimumWidthHint() const /* override */;
     116        /** Returns minimum height-hint. */
     117        virtual int minimumHeightHint() const /* override */;
     118    /** @} */
    59119
    60120private:
    61121
    62     /* Data enumerator: */
     122    /** Data field types. */
    63123    enum GroupItemData
    64124    {
     
    68128    };
    69129
    70     /** Returns the description of the item. */
    71     virtual QString description() const /* override */ { return QString(); }
     130    /** @name Prepare/cleanup cascade.
     131      * @{ */
     132        /** Prepares connections. */
     133        void prepareConnections();
     134    /** @} */
    72135
    73     /* Data provider: */
    74     QVariant data(int iKey) const;
     136    /** @name Item stuff.
     137      * @{ */
     138        /** Returns abstractly stored data value for certain @a iKey. */
     139        QVariant data(int iKey) const;
     140    /** @} */
    75141
    76     /* Hidden API: Children stuff: */
    77     void addItem(UIDetailsItem *pItem);
    78     void removeItem(UIDetailsItem *pItem);
    79     QList<UIDetailsItem*> items(UIDetailsItemType type = UIDetailsItemType_Set) const;
    80     bool hasItems(UIDetailsItemType type = UIDetailsItemType_Set) const;
    81     void clearItems(UIDetailsItemType type = UIDetailsItemType_Set);
     142    /** @name Item stuff.
     143      * @{ */
     144        /** Holds the build step instance. */
     145        UIPrepareStep *m_pBuildStep;
     146        /** Holds the generated group ID. */
     147        QString        m_strGroupId;
     148    /** @} */
    82149
    83     /* Helpers: Prepare stuff: */
    84     void prepareConnections();
     150    /** @name Children stuff.
     151      * @{ */
     152        /** Holds the cached machine item list. */
     153        QList<UIVirtualMachineItem*> m_machineItems;
    85154
    86     /* Helpers: Layout stuff: */
    87     void updateGeometry();
    88     int minimumWidthHint() const;
    89     int minimumHeightHint() const;
    90     void updateLayout();
     155        /** Holds the child list (a list of sets). */
     156        QList<UIDetailsItem*> m_items;
     157    /** @} */
    91158
    92     /* Variables: */
    93     int m_iPreviousMinimumWidthHint;
    94     int m_iPreviousMinimumHeightHint;
    95     QList<UIDetailsItem*> m_items;
    96     QList<UIVirtualMachineItem*> m_machineItems;
    97     UIPrepareStep *m_pBuildStep;
    98     QString m_strGroupId;
    99 
    100     /* Friends: */
    101     friend class UIDetailsModel;
     159    /** @name Layout stuff.
     160      * @{ */
     161        int m_iPreviousMinimumWidthHint;
     162        int m_iPreviousMinimumHeightHint;
     163    /** @} */
    102164};
    103165
    104 #endif /* __UIDetailsGroup_h__ */
    105 
     166#endif /* !___UIDetailsGroup_h___ */
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsItem.cpp

    r74039 r74042  
    261261}
    262262
    263 QSizeF UIDetailsItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint /* = QSizeF() */) const
     263QSizeF UIDetailsItem::sizeHint(Qt::SizeHint enmWhich, const QSizeF &constraint /* = QSizeF() */) const
    264264{
    265265    /* If Qt::MinimumSize or Qt::PreferredSize requested: */
    266     if (which == Qt::MinimumSize || which == Qt::PreferredSize)
     266    if (enmWhich == Qt::MinimumSize || enmWhich == Qt::PreferredSize)
    267267        /* Return wrappers: */
    268268        return QSizeF(minimumWidthHint(), minimumHeightHint());
    269269    /* Call to base-class: */
    270     return QIGraphicsWidget::sizeHint(which, constraint);
     270    return QIGraphicsWidget::sizeHint(enmWhich, constraint);
    271271}
    272272
  • trunk/src/VBox/Frontends/VirtualBox/src/manager/details/UIDetailsItem.h

    r74039 r74042  
    103103      * @{ */
    104104        /** Updates geometry. */
    105         void updateGeometry();
     105        virtual void updateGeometry() /* override */;
    106106
    107107        /** Updates layout. */
     
    116116          * @param  enmWhich    Brings size-hint type.
    117117          * @param  constraint  Brings size constraint. */
    118         QSizeF sizeHint(Qt::SizeHint enmWhich, const QSizeF &constraint = QSizeF()) const;
     118        virtual QSizeF sizeHint(Qt::SizeHint enmWhich, const QSizeF &constraint = QSizeF()) const /* override */;
    119119    /** @} */
    120120
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette