小编Gri*_*ory的帖子

禁用Qt安装程序框架中的本机“下一步”按钮

我必须通过installscript.qs文件在自定义页面上禁用标准的下一个按钮。

我可以通过.qs脚本禁用自己的按钮(在.ui文件中创建),如下所示: widget.myButton.setEnabled(false);

这个人表明本机按钮表示为枚举,我不能以相同的方式禁用它们。

Controller Scripting手册页显示了与本机按钮的一些交互。喜欢gui.clickButton(buttons.NextButton)。我经历了整个gui对象,没有发现任何有用的东西。

Qt安装程序框架具有本机许可证检查页面,该页面带有我需要的“下一步”按钮逻辑,但是我没有找到任何手动完成此操作的示例。(许可证页面有效,因为它是默认的许可证页面,而且据我所知是框架内部的逻辑)。

最后,我发现 isComplete()方法对我有用,但它适用于C ++ API,而不适用于qs。那么如何通过installscript.qs文件禁用本机按钮?

c++ qt qt-installer qscript

5
推荐指数
2
解决办法
653
查看次数

当光标移动到子窗口上时避免 WM_MOUSELEAVE

我正在使用 , 处理鼠标悬停/离开事件TrackMouseEventWM_MOUSEHOVER效果WM_MOUSELEAVE很好。

唯一的问题是,当鼠标悬停在任何窗口的子窗口上时,它会向正在跟踪鼠标的窗口发送一条WM_MOUSELEAVE消息。

我实际上理解 Windows 这样做的原因,但不知道如何解决它。谷歌搜索对我没有帮助。我相信解决方案非常简单,我只是错过了一些东西。我正在开发 Visual C++ Win32 应用程序。(没有MFC等)

我的代码:

void TrackMouse(HWND hwnd)
{
    TRACKMOUSEEVENT tme;
    tme.cbSize = sizeof(TRACKMOUSEEVENT);
    tme.dwFlags = TME_HOVER | TME_LEAVE;
    tme.dwHoverTime = 1; //How long the mouse has to be in the window to trigger a hover event.
    tme.hwndTrack = hwnd;
    TrackMouseEvent(&tme);
}
Run Code Online (Sandbox Code Playgroud)

WndProc:

case WM_MOUSEMOVE:
{
    if (!isTracking)
    {
        TrackMouse(hWnd);
        isTracking = true;
    }
    break;
}

case WM_MOUSEHOVER:
    ShowWindow(MouseIsOver, TRUE);
    break;

case WM_MOUSELEAVE:
    ShowWindow(MouseIsOver, FALSE); …
Run Code Online (Sandbox Code Playgroud)

c++ winapi

2
推荐指数
1
解决办法
2475
查看次数

标签 统计

c++ ×2

qscript ×1

qt ×1

qt-installer ×1

winapi ×1