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
Post a Comment