Коллеги, помогите, обгуглился - бестолку.
Задача: сделать виджет, состоящий из комобокса и дополнительной кнопки. Виджет должен работать в связке QDataWidgetMapper+QSqlRelationalDelegate полностью аналогично QComboBox (не считая дополнительной функциональности кнопки).

Многочисленные маны предлагают очевидный вариант:
class EllipsisComboBox(QWidget):

def __init__(self, parent = None):
QWidget.__init__(self, parent)
self.horizontalLayout = QHBoxLayout(self)
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setMargin(0)
self.horizontalLayout.setObjectName(u'horizontalLayout')
self.cbCombo = QComboBox(self)
self.cbCombo.setObjectName(u'cbCombo')
self.horizontalLayout.addWidget(self)
self.tbEllipsis = QToolButton(self)
self.tbEllipsis.setObjectName(u'tbEllipsis')
self.tbEllipsis.setText(u'...')
self.horizontalLayout.addWidget(self.tbEllipsis)
Визуально получается то, что нужно:


Однако, QSqlQSqlRelationalDelegate при установке данных пытается явно преобразовать виджет к QComboBox:
void setEditorData(QWidget *editor, const QModelIndex &index) const
{
const QSqlRelationalTableModel *sqlModel = qobject_cast<const QSqlRelationalTableModel *>(index.model());
QComboBox *combo = qobject_cast<QComboBox *>(editor);
if (!sqlModel || !combo) {
QItemDelegate::setEditorData(editor, index);
return;
}
combo->setCurrentIndex(combo->findText(sqlModel->data(index).toString()));
}
и, если не получилось, использует QItemDelegate.
Сдается мне, что очевидный вариант не прокатит, ну не сможет QWidget преобразоваться к комбобоксу.

По хорошему, надо бы наследоваться от QComboBox, но тогда я не знаю, как добиться потребного внешнего вида :(
Помогите, люди добрые…