From 263a783228d4c90be7e1bd7354c36a038153a3e9 Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Mon, 22 Aug 2022 21:45:26 +0800 Subject: [PATCH] added TipMenu.h/.cpp --- inc/hgl/qt/widgets/TipMenu.h | 22 ++++++++++++++++++++++ src/CMakeLists.txt | 9 +++++++-- src/widgets/TipMenu.cpp | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 inc/hgl/qt/widgets/TipMenu.h create mode 100644 src/widgets/TipMenu.cpp 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