C++;QT桌面工具栏 在Q+-/P>中,有没有一种方法能在C++中应用“NETOP VIEW”中的工具栏?
工具栏如下所示: 并由应用程序自动打开。它停靠在屏幕的上边框,当鼠标悬停时才显示出来。有没有可能重现这样的东西C++;QT桌面工具栏 在Q+-/P>中,有没有一种方法能在C++中应用“NETOP VIEW”中的工具栏?,c++,windows,qt,toolbar,C++,Windows,Qt,Toolbar,工具栏如下所示: 并由应用程序自动打开。它停靠在屏幕的上边框,当鼠标悬停时才显示出来。有没有可能重现这样的东西 提前谢谢 1.使其看起来像窗口构造函数中的面板过程Qt::FramelessWindowHint标志 2.要将其固定到显示器顶部,请使用QDesktopWidget().availableGeometry()获取显示器大小并将窗口移动到显示器顶部 3.清除窗口构造函数中的任务栏项passQt::Tool标志。所以它看起来是这样的: MyWindowWidget(QWidget* par
提前谢谢 1.使其看起来像窗口构造函数中的面板过程
Qt::FramelessWindowHint
标志
2.要将其固定到显示器顶部,请使用QDesktopWidget().availableGeometry()
获取显示器大小并将窗口移动到显示器顶部
3.清除窗口构造函数中的任务栏项passQt::Tool
标志。所以它看起来是这样的:
MyWindowWidget(QWidget* parent)
: QWidget(parent, Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint)
{
}
4.Qt不能处理全局鼠标事件。您应该使用WINAPI来安装全局钩子并处理所有鼠标事件
a) 安装:
HINSTANCE hInstance = GetModuleHandle(NULL);
HHOOK hMouseHook = SetWindowsHookEx( WH_MOUSE_LL, mouseProc, hInstance, NULL );
b) 过程:
您正在使用Qt Creator吗?
LRESULT CALLBACK mouseProc (int nCode, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCT * pMouseStruct = (MOUSEHOOKSTRUCT *)lParam;
if (pMouseStruct != NULL)
{
if(wParam == WM_MOUSEMOVE)
{
int x = pMouseStruct->pt.x;
int y = pMouseStruct->pt.y;
//g_myWindowWidget is a pointer to an instance of MyWindowWidget
g_myWindowWidget->processMouseMove(x, y);
}
}
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
}
void MyWindowWidget::processMouseMove(int x, int y)
{
const bool hasMouse = rect().contains(mapFromGlobal(QPoint(x, y)));
if (hasMouse && !isVisible())
show();
else if (!hasMouse() && isVisible())
hide();
}