我有以下小部件结构。 CDockWidgetInfoBar
只是QDockWidget
派生类
当我移过QDockWidget
(CDockWidgetInfoBar
)时,我看到了这个分割光标。
它来自哪里?我可以禁用吗?它是QDockWidgetLayout
的一部分吗?但是,QDockWidgetLayout
为Qt private,不得使用。
有什么想法吗?
答案 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();
}
但是在用户尝试浮动停靠后它确实有用。
我知道这不是完整的答案,但也许它有助于或证明这是非常困难的。无论如何,如果有人能找到这个问题的有效解决方案,那将是非常好的。