У меня есть настраиваемое поле со списком, полученное из 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);
введите описание изображения здесь
Было бы здорово, если бы кто-то мог помочь. Заранее спасибо.