qt - QTreeWidget: renaming item to empty -
just quick , easy (maybe) question:
how prevent edit on qtreewidgetitem allowing empty string?
currently, use qtreewidgetitem::itemchanged(qtreewidgetitem*, int) check modifications, , of course, check empty string, don't have previous text. i'm left setting "default" qstring, bad...
thanks & cheers!
i suggest using item delegate tree widget handle possible user input. below simplified solution.
the implementation of item delegate:
class delegate : public qitemdelegate { public: void setmodeldata(qwidget *editor, qabstractitemmodel *model, const qmodelindex &index) const { qlineedit *lineedit = qobject_cast<qlineedit *>(editor); if (!lineedit->ismodified()) { return; } qstring text = lineedit->text(); text = text.trimmed(); if (text.isempty()) { // if text empty, nothing - preserve old value. return; } else { qitemdelegate::setmodeldata(editor, model, index); } } }; implementation of simple tree widget editable item , custom item delegate:
qtreewidget tw; qtreewidgetitem *item = new qtreewidgetitem((qtreewidget*)0, qstringlist(qstring("item 1"))); item->setflags(qt::itemisenabled | qt::itemiseditable); tw.addtoplevelitem(item); tw.setitemdelegate(new delegate); tw.show();
Comments
Post a Comment