Here the dual value editor that is instantiated in delegate.createEditor method with
{
}
QWidget * QStyledItemDelegate::createEditor ( QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index )
{
return new EvaDualValEditor(new QDateTimeEdit(parent), new QDateTimeEdit(parent), parent);
}
To copy to clipboard, switch view to plain text mode
... and it looks like in table edit mode. After tabbing (cursor on blue marked) the editor is closed and the next cell is selected.
dualValEditor.jpg
// header
class EvaDualValEditor
: public QWidget{
Q_OBJECT
public:
~EvaDualValEditor();
void setValues( QVariant& param1, QVariant& param2 );
protected:
private:
void init();
};
// implementation
, wgt1(editor1)
, wgt2(editor2)
{
init();
}
EvaDualValEditor::~EvaDualValEditor()
{
}
void EvaDualValEditor::init()
{
setFocusPolicy (Qt::StrongFocus);
setFocusProxy(wgt1);
setTabOrder
(wgt1, wgt2
);setObjectName
(QString::fromUtf8("EvaDualValEditor"));
horizontalLayout_2
->setObjectName
(QString::fromUtf8("horizontalLayout_2"));
horizontalLayout_2->setSpacing(1);
horizontalLayout_2->setContentsMargins(1, 1, 1, 1);
label
->setObjectName
(QString::fromUtf8("label"));
horizontalLayout_2->addWidget(label);
wgt1
->setObjectName
(QString::fromUtf8("widget"));
horizontalLayout_2->addWidget(wgt1);
label_2
->setObjectName
(QString::fromUtf8("label_2"));
horizontalLayout_2->addWidget(label_2);
wgt2
->setObjectName
(QString::fromUtf8("widget_2"));
horizontalLayout_2->addWidget(wgt2);
}
void EvaDualValEditor::setValues( QVariant& param1, QVariant& param2 )
{
if (wgt1 && !param1.isNull())
{
qobject_cast<QDateTimeEdit*>(wgt1)->setDateTime(param1.toDateTime());
}
if (wgt2 && !param2.isNull())
{
qobject_cast<QDateTimeEdit*>(wgt2)->setDateTime(param2.toDateTime());
}
}
// header
class EvaDualValEditor : public QWidget
{
Q_OBJECT
public:
explicit EvaDualValEditor(QWidget* editor1, QWidget* editor2, QWidget *parent = 0);
~EvaDualValEditor();
void setValues( QVariant& param1, QVariant& param2 );
protected:
private:
QHBoxLayout *horizontalLayout_2;
QLabel *label;
QWidget *wgt1;
QLabel *label_2;
QWidget *wgt2;
void init();
};
// implementation
EvaDualValEditor::EvaDualValEditor(QWidget* editor1, QWidget* editor2, QWidget* parent /*= 0*/)
: QWidget(parent)
, wgt1(editor1)
, wgt2(editor2)
{
init();
}
EvaDualValEditor::~EvaDualValEditor()
{
}
void EvaDualValEditor::init()
{
setFocusPolicy (Qt::StrongFocus);
setFocusProxy(wgt1);
setTabOrder(wgt1, wgt2);setObjectName(QString::fromUtf8("EvaDualValEditor"));
horizontalLayout_2 = new QHBoxLayout(this);
horizontalLayout_2->setObjectName(QString::fromUtf8("horizontalLayout_2"));
horizontalLayout_2->setSpacing(1);
horizontalLayout_2->setContentsMargins(1, 1, 1, 1);
label = new QLabel(this);
label->setObjectName(QString::fromUtf8("label"));
horizontalLayout_2->addWidget(label);
wgt1->setObjectName(QString::fromUtf8("widget"));
horizontalLayout_2->addWidget(wgt1);
label_2 = new QLabel(this);
label_2->setObjectName(QString::fromUtf8("label_2"));
horizontalLayout_2->addWidget(label_2);
wgt2->setObjectName(QString::fromUtf8("widget_2"));
horizontalLayout_2->addWidget(wgt2);
}
void EvaDualValEditor::setValues( QVariant& param1, QVariant& param2 )
{
if (wgt1 && !param1.isNull())
{
qobject_cast<QDateTimeEdit*>(wgt1)->setDateTime(param1.toDateTime());
}
if (wgt2 && !param2.isNull())
{
qobject_cast<QDateTimeEdit*>(wgt2)->setDateTime(param2.toDateTime());
}
}
To copy to clipboard, switch view to plain text mode
Bookmarks