J'ai un délégué pour créer un contrôle QLineEdit
lorsque vous souhaitez modifier une cellule dans ma sous-classe de QTableView
. Dans la fonction data
de mon modèle, j'ai récemment ajouté un cas pour retourner une icône pour Qt::DecorationRole
pour certains éléments.Qt modèle-vue: comment supprimer model :: data DecorationRole lorsque l'éditeur de cellule QTableView est actif
Lorsque l'utilisateur modifie une cellule comportant une icône, la valeur saisie peut entraîner la disparition de l'icône. Tout fonctionne correctement. Le problème est que, si l'icône disparaît lorsque l'utilisateur tape encore dans la cellule, mon contrôle QLineEdit
est toujours dimensionné comme s'il y avait une icône dans la cellule, mais comme il n'y a plus d'icône, une partie de la commande le texte que l'utilisateur tape est affiché là où l'icône était utilisée. Donc, je voudrais avoir la taille de mon délégué l'éditeur QLineEdit
pour remplir la cellule entière même quand une icône est présente (donc l'icône serait invisible lors de la modification), ou mieux encore, je pense que le délégué supprime tout ce qui est retourné pour Qt::DecorationRole
lors de la modification.
Actuellement, mon délégué a les fonctions suivantes:
QWidget *MapTextDelegate::createEditor(QWidget *parent,
const QStyleOptionViewItem & /*option*/,
const QModelIndex & /*index*/) const {
QLineEdit *line_editor;
line_editor = new QLineEdit(parent);
connect(line_editor, SIGNAL(textChanged(QString)),
this, SLOT(MapTextChanged()));
return line_editor;
}
QSize MapTextDelegate::sizeHint(const QStyleOptionViewItem &/*option*/,
const QModelIndex &/*index*/) const
{
QLineEdit *line_editor = new QLineEdit();
return line_editor->sizeHint();
}
Je ne vois rien d'autre dans le délégué qui pourrait avoir à voir avec la taille de l'éditeur. Je ne suis pas très familier avec l'utilisation des délégués - en fait, je suis assez nouveau pour C++ et Qt.
Des idées? J'utilise Qt 4.7.