4

次のウィジェット構造があります。CDockWidgetInfoBar単なるQDockWidget派生クラスです

ウィジェット構造

QDockWidget( )の上に移動すると、CDockWidgetInfoBarこの分割カーソルが表示されます。 カーソルのサイズ変更

それはどこから来ているのですか?無効にできますか? の一部QDockWidgetLayoutですか?ただし、 QtQDockWidgetLayoutプライベートであり、使用されません。

何か案は?

4

1 に答える 1

1

システム的には無理か極度に苦痛のようです。

ここでこれを行ったので、これを実行しようとしました: QHeaderViewセクション間の境界線の下にある場合、カーソルをSplitHCursに変換するのを防ぐにはどうすればよいですか?

しかし、主な問題は、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();
}

しかし、ユーザーがドックを浮かせようとすると、実際に機能します。

それが完全な答えではないことは知っていますが、それが非常に難しいことを証明したり、助けたりするかもしれません。とにかく、誰かがこの問題の効率的な解決策を見つけたら、それは非常に素晴らしいことです.

于 2014-10-13T14:03:14.083 に答える