IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Verrouiller des cellules dans un QTableWidget

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Par défaut Verrouiller des cellules dans un QTableWidget
    Bonjour,

    Je sais verrouiller un QTableWidget complètement (par exemple : MonQTableWidget->setEnabled(false);)

    Cela marche bien, mais ça a deux inconvénients pour ce que je veux faire.

    1. Ça grise le tableau qui est moins exploitable.
    2. Ça le verrouille complètement.


    Ma question:

    Comment puis je verrouiller seulement certaines cellules du tableau sans changer leurs aspects ?

    Merci

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    Regarde peut être du côté de QAbstractItemDelegate, qui permet de contrôler l'affichage et l'édition des différents éléments d'un modèle.

  3. #3
    Membre confirmé
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Par défaut
    Je ne suis pas sur de comprendre...:p

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Comment je vois la chose :
    - ton modèle conserve les données
    - ta vue les affiches
    Donc reste le boulot de savoir quand tu peux éditer des données. Ça s'est le boulot du delegate

    Imagine que tu conserves l'information editable/non editale quelque part (par exemple dans une map ou une liste ou dans ton modèle) et que cette information soit récupérable par la fonction :

    Tu crées simplement ton modèle, ta vue et ton delegate :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    QStandardItemModel model(4, 2);
    QTableView tableView;
    tableView.setModel(&model);
    TonDelegate delegate;
    tableView.setItemDelegate(&delegate);

    Par exemple, si tu veux afficher les cellules non éditable avec un grisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void TonDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
    {
        QStyledItemDelegate::paint(painter, option, index);
        if (editable(index.column(), index.row()))
            painter->drawRect(...); // tu dessines un rectangle gris transparent
    }
    Si tu veux bloquer l'édition d'un item, il suffit de ne pas renvoyer de widget :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    QWidget *TonDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
    {
        if (!editable(index.column(), index.row()))
             return QStyledItemDelegate::createEditor(parent, option, index);
        else
             return NULL;
    }
    etc.


    Ce n'est que la première idée à laquelle j'ai pensé, il y a peut être mieux comme solution.

  5. #5
    Membre confirmé
    Avatar de katanaenmousse
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 220
    Par défaut
    Merci gbdivers je vais voir ça de plus près.

Discussions similaires

  1. Fixer la taille des cellules dans un tableau HTML ?
    Par bilou95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/03/2007, 16h10
  2. [C# 1.1] Comment fusionner des cellules dans un datagrid ?
    Par absolute_beginner dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/11/2006, 16h45
  3. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35
  4. Désignation des cellules dans une routine
    Par houadglaz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/09/2006, 21h26
  5. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo