QStyledItemDelegate
(Qt5)を使用して、QPixmap
を私がホバーするとQTreeView
行にペイントしました。OS X TreeViewペイント
void ActionsItemDelegate::paint(
const QStyleOptionViewItem &option,
const QModelIndex& selectedProxy) const
{
QStyledItemDelegate::paint(painter, option, selectedProxy);
if (option.state & QStyle::State_MouseOver)
{
Draw qpixmap ...
}
}
WindowsとLinuxでは期待通りに動作しますが、OS X 10.11では動作しません。 paint()
は単に私が行をクリックしたときには、など、ウィンドウのサイズが変更されたとき、呼ばれていますOS X上でホバーで呼び出されていない私は、ことがわかった:
- のWindowsは、Linux(ミント
- ホバー上の行をハイライトします、少なくとも)
- OS Xがホバー上の任意のピクセルは変更されませんので、OSと同じように行うことができます必要
他のウィンドウマネージャはありませんので、それがpaint()
を呼び出すことはありませんホバー上のチェックボックスをhightlights私はそれらをすべてテストすることはできません。 OSがそれを必要としなくても、paint()
がホバー上で呼び出されるようにする方法はありますか?
'paint 'を実装するのは仕事の半分だけです。他の半分はマウスイベントに反応して 'update()'を呼び出しています。これには、ビューにイベント・フィルターを追加する必要があります。 –
@KubaOberはい、私はそれを他の場所でも読んでいますが、私はどのように、どこでそれをやるべきかについての情報が必要なので、私は頼んでいます。例は、他のすべてのプログラマーを助けるでしょう。 – Nil