Форум сайта python.su
Коллеги, помогите, обгуглился - бестолку.
Задача: сделать виджет, состоящий из комобокса и дополнительной кнопки. Виджет должен работать в связке 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)
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()));
}
Офлайн