1.如何让树控件的第二栏变成QSpinBox?
首先我们要了解类QItemDelegate,这是个委托类。委托类可用于很多地方,比如QTreeWidget,QTableWidget等等。要想实现自定义的委托类,我们可以继承QItemDelegate,然后实现4个方法,分别是createEditor(),setEditorData(),updateEditorGeometry() ,setModelData() 。4个方法的用途,详请参考QT帮助文档。
好了,有了我们自定的委托类。这件事就好办多了。QTreeWidget的方法setItemDelegateForColumn( int column, QAbstractItemDelegate * delegate ),可用来将指定的列设置为某个委托。这样它,就会如我们所愿的显示和工作了。
关键代码如下:
QWidget *SpinBoxDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem &/* option */,
const QModelIndex &/* ind