2017-08-25 8 views
1

私は現在、QGraphicsSceneQComboBoxを持っており、クリックを検出する必要があります。ウィジェットは、クリックした位置にあるかどうかを確認するために、私が使用します。QComboBoxのドロップダウンリストをクリックしてください

void BlockScene::mousePressEvent(QMouseEvent *event) 
{ 
    if (itemAt(event->pos()) != m_widgetItem) 
    { 
     // ... 
    } 
} 

これはそれだけで表示されるドロップダウンリストのアカウントにオリジナルのウィジェットを取得していないコンボボックスを除き、別のウィジェットに適しています最初のクリック後に

シーンから来ているかどうかを知るには、QComboBoxmousePressEventと同じ問題を再定義してテストしました。これは最初のウィジェットをクリックしたときにのみ呼び出されます。

ドロップダウンリストを取得する方法はありますか?クリックを検出するには?アイデア?

+1

ComboBoxはマウスプレスイベントではなく、currentIndexChanged信号を使用します。 – WLGfx

+0

私は同意しますが、私のQGraphicsSceneでは、クリックがドロップダウンリストを含むコンボボックスの外側にある場合に使用する必要があります。 – Maluna34

+0

ええ、あなたはonBlurイベントの後にいると思いますが、Qtには1つもありません。最も近いのはアクティブ化された信号ですが、ドキュメント内でウィジェットを離れるための信号を送信するかどうかはわかりません。 – WLGfx

答えて

0

コンボのビューまたはコンプリータのカスタムウィジェットを定義できます。 例えば、QComboBoxのサブクラスでコンプリータが必要な場合は、このコードを試してください。 MyListViewはQListViewのサブクラスです。あなたがコンプリータを必要としない場合はその上で、あなたは、コンボボックスに直接setviewコマンドを実行し、mousePressEvent方法

completer()->setCompletionMode(QCompleter::PopupCompletion); 
    MyListView *comboView = new MyListView(); 
    completer()->setPopup(comboView); 

を再実装することができます。

MyListView *comboView = new MyListView(); 
setView(comboView); 
関連する問題