From 180abfff4d31bc8db66fea92cf070ff21b7a5e2f Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Thu, 1 Nov 2012 22:50:23 -0500 Subject: Add accessor methods to list view items and popup menus for styling --- src/widgets/qlistview.cpp | 9 +++++++++ src/widgets/qlistview.h | 1 + src/widgets/qpopupmenu.cpp | 27 +++++++++++++++++++++++++++ src/widgets/qpopupmenu.h | 3 +++ 4 files changed, 40 insertions(+) (limited to 'src') diff --git a/src/widgets/qlistview.cpp b/src/widgets/qlistview.cpp index 304ad18..385ad04 100644 --- a/src/widgets/qlistview.cpp +++ b/src/widgets/qlistview.cpp @@ -489,6 +489,15 @@ static QString qEllipsisText( const QString &org, const QFontMetrics &fm, int wi greater than 1000, to allow for extensions to this class. */ +/*! + Constructs a new top-level list view item with no parent +*/ + +QListViewItem::QListViewItem( ) +{ + init(); +} + /*! Constructs a new top-level list view item in the QListView \a parent. diff --git a/src/widgets/qlistview.h b/src/widgets/qlistview.h index e5dc0e4..ba0dae7 100644 --- a/src/widgets/qlistview.h +++ b/src/widgets/qlistview.h @@ -69,6 +69,7 @@ class Q_EXPORT QListViewItem : public Qt friend class QListViewToolTip; public: + QListViewItem( ); QListViewItem( QListView * parent ); QListViewItem( QListViewItem * parent ); QListViewItem( QListView * parent, QListViewItem * after ); diff --git a/src/widgets/qpopupmenu.cpp b/src/widgets/qpopupmenu.cpp index f20cbfc..086c423 100644 --- a/src/widgets/qpopupmenu.cpp +++ b/src/widgets/qpopupmenu.cpp @@ -2882,5 +2882,32 @@ QPopupMenu::updateScrollerState() d->scroll.topScrollableIndex++; } +/*! + Calculates the height in pixels of the menu item \a mi. +*/ +int QPopupMenu::menuItemHeight( QMenuItem *mi, QFontMetrics fm ) +{ + if ( mi->widget() ) + return mi->widget()->height(); + if ( mi->custom() && mi->custom()->fullSpan() ) + return mi->custom()->sizeHint().height(); + + int h = 0; + if ( mi->isSeparator() ) // separator height + h = 2; + else if ( mi->pixmap() ) // pixmap height + h = mi->pixmap()->height(); + else // text height + h = fm.height(); + + if ( !mi->isSeparator() && mi->iconSet() != 0 ) + h = QMAX(h, mi->iconSet()->pixmap( QIconSet::Small, + QIconSet::Normal ).height()); + if ( mi->custom() ) + h = QMAX(h, mi->custom()->sizeHint().height()); + + return h; +} + #endif // QT_NO_POPUPMENU diff --git a/src/widgets/qpopupmenu.h b/src/widgets/qpopupmenu.h index 0609731..7569381 100644 --- a/src/widgets/qpopupmenu.h +++ b/src/widgets/qpopupmenu.h @@ -193,6 +193,9 @@ private: // Disabled copy constructor and operator= QPopupMenu( const QPopupMenu & ); QPopupMenu &operator=( const QPopupMenu & ); #endif + +public: + static int menuItemHeight( QMenuItem* mi, QFontMetrics fm ); }; -- cgit v1.2.1