日志
判断指针是否为自定义类,用如下办法解决了。
2017-10-29 11:15
做了个表格,能动态添加,删除行列,并进行即时计算。用了 model view delegate模式。
在model 里设置了所有单元格都可编辑。用delegate 模式,设定了某些行只读属性。 要求能判断,选中的行为只读,不进行复制操作。先用了 flags的办法,由于只是在 delegate里设定(model 里设定太麻烦了),发现这些设定无效,一切以model为准。 又想到了用获取类名的办法来判断。 我自己的类名为 class ReadOnlyDelegate : public QItemDelegate QModelIndex index=tableview->currentIndex(); QAbstractItemDelegate *itemdelegate= tableview->itemDelegateForRow(index.row()); // qDebug() <<itemdelegate->metaObject()->className(); // bool ok = itemdelegate->inherits("ReadOnlyDelegate"); // qDebug()<<ok; 但返回的都是我写的类的父类的名称QItemDelegate 。 最后在快放弃的时刻,发现了一个好东西:objectName,于是大功告成。 构造时设定: ReadOnlyDelegate *readOnly = new ReadOnlyDelegate; readOnly->setObjectName("readonly"); 函数里判断: if(itemdelegate){ QString objectName= itemdelegate->objectName(); if ( objectName == "readonly"){ qDebug()<< "object name" << objectName; return; } } |
下一篇: 除去flags 里的可编辑属性