QCompleter появляется в неправильных координатах с QGraphicsProxyWidget - PullRequest
0 голосов
/ 06 августа 2020

У меня есть настраиваемое поле со списком, полученное из QComboBox с QCompleter для функции автозаполнения.

    ComboWithAutoComplete::ComboWithAutoComplete()
        : m_pUI(new Ui::ComboWithAutoComplete())
        , m_pApplication(pApplication)
        , m_proxyModel(new QSortFilterProxyModel)
        , m_model(new QStringListModel)
        , m_completer(new QCompleter(m_model.data(), this))
    {
        m_pUI->setupUi(this);

        m_pUI->comboBox->setEditable(true);
        
        m_proxyModel->setSourceModel(m_model.data());
        m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
        m_pUI->comboBox->setModel(m_proxyModel.data());
        
        m_completer->setCompletionMode(QCompleter::PopupCompletion);
        m_completer->setCaseSensitivity(Qt::CaseInsensitive);
        m_pUI->comboBox->setInsertPolicy(QComboBox::NoInsert);
        m_pUI->comboBox->setCompleter(m_completer.data());
    }

ComboWithAutoComplete при поиске отображаются в правильной позиции, если они используются в QTreeView / QTableView et c. Однако, когда я использую его в QGraphicScene с QGraphicsProxyWidget, всплывающее окно появляется в неожиданном месте.

auto pPropertyWidget = new ComboWithAutoComplete();
QGraphicsProxyWidget* pProxyWidget = new QGraphicsProxyWidget(this);
pPropertyWidget->setEnabled(isEnabled());
pProxyWidget->setWidget(pPropertyWidget);
pProxyWidget->setAutoFillBackground(false);
pPropertyWidget->setAttribute(Qt::WA_NoSystemBackground);
pProxyWidget->setFocusPolicy(Qt::StrongFocus);

введите описание изображения здесь

Было бы здорово, если бы кто-то мог помочь. Заранее спасибо.

...