禁用QDockWidget的拆分器光标

时间:2014-10-13 12:36:05

标签: c++ qt qwidget qdockwidget qt5.3

我有以下小部件结构。 CDockWidgetInfoBar只是QDockWidget派生类

Widget structure

当我移过QDockWidgetCDockWidgetInfoBar)时,我看到了这个分割光标。 Resize cursor

它来自哪里?我可以禁用吗?它是QDockWidgetLayout的一部分吗?但是,QDockWidgetLayoutQt private,不得使用。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

系统似乎不可能或非常痛苦。

我尝试这样做,就像我在这里做的那样:How can I prevent transform cursor to SplitHCursor when it's under border between QHeaderView sections

但主要问题是调整大小光标会在QEvent::Enter事件发生之前出现。 (如果你运行下一个代码,你会先看到调整光标,但你不会看到“添加”字样)。据我所知,当它移动到小部件边缘附近时,没有任何可以捕获光标的事件。所以抓住这个事件非常困难。还有另一种方式。在mouseMoveEvent中,每次检查是否在dock小部件附近。但我认为这是非常低效的。

我写了这段代码:

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();
}

但是在用户尝试浮动停靠后它确实有用。

我知道这不是完整的答案,但也许它有助于或证明这是非常困难的。无论如何,如果有人能找到这个问题的有效解决方案,那将是非常好的。