c++ - QTreeWidgetItem editable allow entering number only -


i created qtreewidget several qtreewidgetitem.

here code:

//defined property tree m_ppropertytree = new qtreewidget(); m_ppropertytree->setsizepolicy(qsizepolicy::expanding, qsizepolicy::expanding); m_ppropertytree->setcolumncount(2); m_ppropertytree->setheaderlabels(qstringlist() << "property" << "value"); //update property tree //--geometry qtreewidgetitem *pgeometryitem = new qtreewidgetitem(m_ppropertytree); pgeometryitem->settext(0, "geometry"); //x qtreewidgetitem *pxitem = new qtreewidgetitem(); pxitem->settext(0, "x"); pxitem->settext(1, qstring::number(geometry().x())); pxitem->setflags(pxitem->flags() | qt::itemiseditable); pgeometryitem->addchild(pxitem); //y qtreewidgetitem *pyitem = new qtreewidgetitem(); pyitem->settext(0, "y"); pyitem->settext(1, qstring::number(geometry().y())); pyitem->setflags(pyitem->flags() | qt::itemiseditable); pgeometryitem->addchild(pyitem); //width qtreewidgetitem *pwidthitem = new qtreewidgetitem(); pwidthitem->settext(0, "width"); pwidthitem->settext(1, qstring::number(geometry().width())); pwidthitem->setflags(pwidthitem->flags() | qt::itemiseditable); pgeometryitem->addchild(pwidthitem); //height qtreewidgetitem *pheightitem = new qtreewidgetitem(); pheightitem->settext(0, "height"); pheightitem->settext(1, qstring::number(geometry().height())); pheightitem->setflags(pheightitem->flags() | qt::itemiseditable); pgeometryitem->addchild(pheightitem); 

when double clicked on item, can edit item's text. however, want allow user enter number when editing. there anyway ?

i think there number of methods, overloading of qitemdelegate::createeditor more useful others.

you should write code qvalidator, in case, use qintvalidator.

class customdelegate : public qitemdelegate { public:     qwidget* createeditor(qwidget *parent, const qstyleoptionviewitem & option,                       const qmodelindex & index) const     {         qlineedit *lineedit = new qlineedit(parent);          // set validator, such 'only number between 0 ~ 9 )         qintvalidator *validator = new qintvalidator(0, 9, lineedit);         lineedit->setvalidator(validator);          return lineedit;     } }; 

and then, set custom delegate tree.

m_ppropertytree->setitemdelegate( new customdelegate ); 

Comments

Popular posts from this blog

java - Run spring boot application error: Cannot instantiate interface org.springframework.context.ApplicationListener -

reactjs - React router and this.props.children - how to pass state to this.props.children -

Excel VBA "Microsoft Windows Common Controls 6.0 (SP6)" Location Changes -