Eigene Deleagte Klasse vervollständigen (reagiert nicht)
Eigene Deleagte Klasse vervollständigen (reagiert nicht)
Hallo alle zusammen,
habe für eine Tree View ein Delegate geschrieben, was anstalle eines normalen labels eine checkbox printet.
Was muss ich noch machen, damit die Checkbox ansprechbar wird? Kann sie nicht anklicken, auf events wie hover oder so reagiert es auch nicht.
Gruß,
Andreas
habe für eine Tree View ein Delegate geschrieben, was anstalle eines normalen labels eine checkbox printet.
Was muss ich noch machen, damit die Checkbox ansprechbar wird? Kann sie nicht anklicken, auf events wie hover oder so reagiert es auch nicht.
Gruß,
Andreas
Hallo,
also ich habs jetzt über data() hinbekommen, über die checkstate role den status zu übergeben. Was genau muss ich aber noch machen, dass ich die CheckBox überhaupt anklicken kann? Auf das Signal clicked(model index) von der TreeView reagiert er nicht?
Bin für alle guten Ratschläge dankbar.
Gruß,
Andy
also ich habs jetzt über data() hinbekommen, über die checkstate role den status zu übergeben. Was genau muss ich aber noch machen, dass ich die CheckBox überhaupt anklicken kann? Auf das Signal clicked(model index) von der TreeView reagiert er nicht?
Bin für alle guten Ratschläge dankbar.
Gruß,
Andy
Hi, das hier sind meine Flags:
Hab einfach mal radikal alles genommen was es hätte sein können.
So sieht momentan die data() funktion aus:
Und so die pain() von dem delegate:
Gruß,
Andy
Code: Alles auswählen
QStyle::State_On | QStyle::State_Enabled | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable
So sieht momentan die data() funktion aus:
Code: Alles auswählen
QVariant TreeModel::data(const QModelIndex &index, int role) const {
if (!index.isValid())
return QVariant();
if(role == Qt::CheckStateRole){
return QVariant(QStyle::State_On | QStyle::State_Enabled | Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable);
}
if (role != Qt::DisplayRole)
return QVariant();
TreeItem *item = static_cast<TreeItem*>(index.internalPointer());
return item->data(index.column());
}
Code: Alles auswählen
void TreeDeleagate::paint( QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index ) const{
QStyleOptionButton styles;
styles.rect = option.rect; //get copy rect option from option
styles.text = index.data(Qt::DisplayRole).toString(); //get text from tree model
styles.state = (QStyle::State) index.data(Qt::CheckStateRole).toUInt();
painter->save();
QApplication::style()->drawControl(QStyle::CE_CheckBox, &styles, painter);//draw checkbox item
painter->restore();
}
Andy
Code: Alles auswählen
QTableWidget *wdg=new QTableWidget(5, 2);
for (int i=0; i<3; i++) {
QTableWidgetItem *item=new QTableWidgetItem("Test");
item->setCheckState((Qt::CheckState)i);
wdg->setItem(i, 0, item);
}
wdg->show();