Implement setting bitmaps for the menu item for wxQt

Closes https://github.com/wxWidgets/wxWidgets/pull/975
This commit is contained in:
Vadim Zeitlin
2018-10-11 14:40:20 +02:00
parent 17e243a5e4
commit bc974910ec
3 changed files with 16 additions and 13 deletions

View File

@@ -166,6 +166,7 @@ wxOSX:
wxQt: wxQt:
- Fix menu bar background colour (Naser Buhamad). - Fix menu bar background colour (Naser Buhamad).
- Add support for bitmaps in menu items (Igor Korot).
3.1.1: (released 2018-02-19) 3.1.1: (released 2018-02-19)

View File

@@ -9,6 +9,8 @@
#define _WX_QT_MENUITEM_H_ #define _WX_QT_MENUITEM_H_
#include "wx/menuitem.h" #include "wx/menuitem.h"
#include "wx/bitmap.h"
class QAction; class QAction;
class WXDLLIMPEXP_FWD_CORE wxBitmap; class WXDLLIMPEXP_FWD_CORE wxBitmap;
@@ -33,14 +35,15 @@ public:
virtual void Check(bool check = true); virtual void Check(bool check = true);
virtual bool IsChecked() const; virtual bool IsChecked() const;
void SetBitmap(const wxBitmap& bitmap); virtual void SetBitmap(const wxBitmap& bitmap);
const wxBitmap& GetBitmap() const; virtual const wxBitmap& GetBitmap() const { return m_bitmap; };
virtual QAction *GetHandle() const; virtual QAction *GetHandle() const;
private: private:
// Qt is using an action instead of a menu item. // Qt is using an action instead of a menu item.
QAction *m_qtAction; QAction *m_qtAction;
wxBitmap m_bitmap;
wxDECLARE_DYNAMIC_CLASS( wxMenuItem ); wxDECLARE_DYNAMIC_CLASS( wxMenuItem );
}; };

View File

@@ -106,18 +106,17 @@ bool wxMenuItem::IsChecked() const
} }
void wxMenuItem::SetBitmap(const wxBitmap& WXUNUSED(bitmap)) void wxMenuItem::SetBitmap(const wxBitmap& bitmap)
{ {
wxMISSING_FUNCTION(); if ( m_kind == wxITEM_NORMAL )
} {
m_bitmap = bitmap;
const wxBitmap &wxMenuItem::GetBitmap() const m_qtAction->setIcon( QIcon( *m_bitmap.GetHandle() ) );
{ }
wxMISSING_FUNCTION(); else
{
static wxBitmap s_bitmap; wxFAIL_MSG("only normal menu items can have bitmaps");
}
return s_bitmap;
} }
QAction *wxMenuItem::GetHandle() const QAction *wxMenuItem::GetHandle() const