我目前在QComboBox
中有QGraphicsScene
,我需要它来检测点击次数。要查看点击位置是否有小部件,我使用:
void BlockScene::mousePressEvent(QMouseEvent *event)
{
if (itemAt(event->pos()) != m_widgetItem)
{
// ...
}
}
这适用于不同的小部件,除了组合框,它只考虑原始小部件,而不是第一次点击后出现的下拉列表。
要知道它是否来自场景,我还通过重新定义类mousePressEvent
的{{1}}和同样的问题来测试:只有在点击初始小部件时才会调用它。
有没有办法获得下拉列表?检测点击它?想法?
答案 0 :(得分:0)
您可以为组合视图或其完成者定义自定义窗口小部件。 例如,在QComboBox的子类中,如果需要完成器,请尝试此代码。 MyListView是QListView的子类。在那,你可以重新实现mousePressEvent方法
mainView
如果您不需要完成者,请直接在组合框上执行setView。
completer()->setCompletionMode(QCompleter::PopupCompletion);
MyListView *comboView = new MyListView();
completer()->setPopup(comboView);