Ver Mensaje Individual
  #13 (permalink)  
Antiguo 18/03/2015, 02:57
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Qt. Delegados. Usar diferente widget para editar y para mostrar

Hola eferion:

Gracias por estar ahí. Aunque he visto tu respuesta (y la entiendo!!!) me pregunto si sería válido éste planteamiento que conseguí hacer ayer después de plantear la duda....quiero decir, funciona pero no sé si es ortodoxo.

La idea es sobrecargar el constructor del delegado, de forma que incorpore un puntero al grafo en cuestión, y poder hacer uso así del mismo.

Esto es lo que he hecho:

El delegado:
Código C++:
Ver original
  1. #ifndef DELEGADOPARANUMERO_H
  2. #define DELEGADOPARANUMERO_H
  3.  
  4. #include <QStyledItemDelegate>
  5.  
  6. class Grafo;
  7.  
  8. class DelegadoParaNumero : public QStyledItemDelegate
  9. {
  10.     Q_OBJECT
  11. public:
  12.     explicit DelegadoParaNumero(Grafo* grafo, QWidget *parent = 0);
  13.  
  14. private:
  15.  
  16.     Grafo* G;
  17.  
  18. protected:
  19.     virtual void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const;
  20.  
  21. };
  22.  
  23. #endif // DELEGADOPARANUMERO_H

el *.cpp

Código C++:
Ver original
  1. DelegadoParaNumero::DelegadoParaNumero(Grafo* grafo, QWidget *parent) : G(grafo), QStyledItemDelegate(parent) {}
  2.  
  3. void DelegadoParaNumero::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
  4. {
  5.     QColor colorFondo (Qt::cyan);
  6.     painter->save();
  7.     //painter->setPen(colorNumeros);
  8.     if (G->NivelCero())
  9.     {
  10.         painter->fillRect(option.rect,colorFondo);
  11.     }
  12.     painter->drawText(option.rect,Qt::AlignCenter,index.data().toString());
  13.     painter->restore();
  14. }

Perdón, añado el "seteo" de este delegado en la tabla:

Código C++:
Ver original
  1. tabla->setItemDelegateForColumn(0,new DelegadoParaNumero(migrafo));

¿Qué piensas? :-?
__________________
Mi calculadora en Qt

Última edición por dehm; 18/03/2015 a las 03:42 Razón: Añadir información