禁用QDockWidget的分隔符光标

4
我有以下小部件结构。 CDockWidgetInfoBar 只是一个派生自 QDockWidget 的类。

Widget structure

当我移动 QDockWidget (CDockWidgetInfoBar) 时,我看到这个分隔符光标。 Resize cursor 它是从哪里来的?我可以禁用它吗?它是 QDockWidgetLayout 的一部分吗?但是,QDockWidgetLayoutQt private,不应该使用。
有任何想法吗?

顺便问一下,这个光标叫什么名字:调整大小光标、分隔符光标还是其他什么? - Horst Walter
1个回答

1

对于系统来说,似乎这是不可能或极其痛苦的。

我尝试像这里一样做:如何在QHeaderView部分之间的边框下防止将光标转换为SplitHCursor

但是主要问题是,在QEvent :: Enter事件发生之前,调整大小的光标就会出现。 (如果您运行下一个代码,您将首先看到调整大小的光标,但您将看不到“已添加”一词)。 据我所知,没有任何事件可以捕捉光标移动到小部件边缘附近的情况。 因此,很难捕获此事件。 还有另一种方法。 在mouseMoveEvent中,每次检查光标是否靠近停靠窗口。 但我认为这非常低效。

我写了这段代码:

if (obj == ui->dockWidget && event->type() == QEvent::Enter)
{
    qApp->setOverrideCursor(QCursor(Qt::ArrowCursor));
    qDebug() << "added";
}
if (obj == ui->dockWidget && event->type() == QEvent::Leave)
{
    qApp->restoreOverrideCursor();
}

但是当用户尝试使用浮动码头后,它真的有效。
我知道这不是完整的答案,但也许可以帮助或证明这非常困难。无论如何,如果有人能找到有效的解决方案,那将是非常好的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接