单击QComboBox的下拉列表

时间:2017-08-25 10:47:28

标签: c++ qt combobox mouseevent

我目前在QComboBox中有QGraphicsScene,我需要它来检测点击次数。要查看点击位置是否有小部件,我使用:

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

这适用于不同的小部件,除了组合框,它只考虑原始小部件,而不是第一次点击后出现的下拉列表。

要知道它是否来自场景,我还通过重新定义类mousePressEvent的{​​{1}}和同样的问题来测试:只有在点击初始小部件时才会调用它。

有没有办法获得下拉列表?检测点击它?想法?

1 个答案:

答案 0 :(得分:0)

您可以为组合视图或其完成者定义自定义窗口小部件。 例如,在QComboBox的子类中,如果需要完成器,请尝试此代码。 MyListView是QListView的子类。在那,你可以重新实现mousePressEvent方法

mainView

如果您不需要完成者,请直接在组合框上执行setView。

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