diff --git a/inc/hgl/qt/widgets/TipMenu.h b/inc/hgl/qt/widgets/TipMenu.h new file mode 100644 index 0000000..09deadc --- /dev/null +++ b/inc/hgl/qt/widgets/TipMenu.h @@ -0,0 +1,22 @@ +#ifndef HGL_QT_TIP_MENU_INCLUDE +#define HGL_QT_TIP_MENU_INCLUDE + +#include + +namespace hgl +{ + namespace qt + { + class TipMenu:public QMenu + { + Q_OBJECT + + public: + + using QMenu::QMenu; + + bool event(QEvent *)override; + };//class TipMenu:public QMenu + }//namespace qt +}//namespace hgl +#endif//HGL_QT_TIP_MENU_INCLUDE diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f67487d..3874fb2 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,7 +2,7 @@ find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Gui Widgets Svg Xm SET(CMQT_INCLUDE_PATH ${CMQT_ROOT_INCLUDE_PATH}/hgl/qt) -SET(CMQT_WIDGET_INCLUDE_PATH ${CMQT_INCLUDE_PATH}/widget) +SET(CMQT_WIDGET_INCLUDE_PATH ${CMQT_INCLUDE_PATH}/widgets) SET(CMQT_DIALOG_INCLUDE_PATH ${CMQT_INCLUDE_PATH}/dialog) IF(WIN32) @@ -20,12 +20,17 @@ SET(CMQT_IMAGE_FILES image/SVGPixmap.cpp) SOURCE_GROUP("Image" FILES ${CMQT_IMAGE_FILES}) +SET(CMQT_MENU_SOURCE ${CMQT_WIDGET_INCLUDE_PATH}/TipMenu.h + widgets/TipMenu.cpp) + +SOURCE_GROUP("Menu" FILES ${CMQT_MENU_SOURCE}) + SET(CMQT_Vulkan_FILES ${CMQT_INCLUDE_PATH}/QtVulkanWindow.h vulkan/QtVulkanWindow.cpp vulkan/QtVulkanSurface.cpp) SOURCE_GROUP("Vulkan" FILES ${CMQT_Vulkan_FILES}) -add_cm_library(CMQT "CM" ${CMQT_DIALOG_FILES} ${CMQT_IMAGE_FILES} ${CMQT_Vulkan_FILES}) +add_cm_library(CMQT "CM" ${CMQT_DIALOG_FILES} ${CMQT_IMAGE_FILES} ${CMQT_MENU_SOURCE}) target_link_libraries(CMQT PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Svg Qt5::Xml Qt5::VulkanSupport) \ No newline at end of file diff --git a/src/widgets/TipMenu.cpp b/src/widgets/TipMenu.cpp new file mode 100644 index 0000000..82d8e5d --- /dev/null +++ b/src/widgets/TipMenu.cpp @@ -0,0 +1,25 @@ +#include +#include +#include + +namespace hgl +{ + namespace qt + { + bool TipMenu::event(QEvent *e) + { + if(e->type()==QEvent::ToolTip) + { + QHelpEvent *helpEvent=static_cast(e); + QAction *action=actionAt(helpEvent->pos()); + if(action) + { + QToolTip::showText(helpEvent->globalPos(),action->toolTip()); + return true; + } + } + + return QMenu::event(e); + } + }//namespace qt +}//namespace hgl