[Qt-interest] Show QTableView is a very slow?

SALOMEHER at terra.es SALOMEHER at terra.es
Wed Feb 4 15:19:03 CET 2009


Hi again,
thank you very much for your interest.
I use QSet. 
Regards.

----Mensaje original----
De: aberaud at infflux.com
Recibido: 03/02/2009 16:47
Para: <qt-interest at trolltech.com>
Asunto: Re: [Qt-interest] Show QTableView is a very slow?

Hi again,

The data() method is evaluated for every cell that needs to be 
redrawn, 
thus it is better if it does not do too many calculations. Do you use 
the contains() method on QLists ? If so, then it may be very slow, 
and 
I'd advise to convert your QLists to QSets(outside the data() 
method)  
and use the contains() method on those QSets instead.

Regards,

Alex


SALOMEHER at terra.es a écrit :
> I have a class
>
> class MiTabla: public QTableView
>  
> MiTabla(QWidget *parent):QTableView(parent)  { ... }
> void mousePressEvent(QMouseEvent *event) { ... }
> void keyPressEvent(QKeyEvent *event) { ... }
>
> I then in my code initializes
>
> MiTabla *view = new MiTabla(principal);
> view->setGeometry(1, 0, principal->width()-1, PanLeyenda->y()-2));
> TablaModelI *model = new TablaModelI(0, MatrizMicroDatosS, listaH, 
> listaV);
> view->setModel(model);
>
> MatrizMicroDatosS is QString **
> listaH and listaV is QStringList
> TablaModelI is class TablaModelI: public QAbstractTableModel 
>
> TablaModelI::TablaModelI(QObject *parent, QString ** &vec, 
QStringList 
> &cabecH, QStringList &cabecV):QAbstractTableModel(parent)
>   {
>     distances = vec;
>     cabeceraH = cabecH;
>     cabeceraV = cabecV;    
>   }
>
> where I in
> QVariant data(const QModelIndex &index, int role) { ... }
> I paint each cell of a different color depending on the value you 
> have. 
>
> QVariant TablaModelI::data(const QModelIndex &index, int role) const
>   {
>     if (!index.isValid())
>       return QVariant();
>
>     if (role == Qt::TextAlignmentRole)
>       return int(Qt::AlignCenter);
>
>     if (role == Qt::DisplayRole)
>       return distances[index.row()][index.column()];
>
>     if (role == Qt::BackgroundRole) {
>       QColor color;
>       if (index.column() == 0)
>         return QColor(Qt::green);
>
>       if (ConjuntoRegistrosExcluidos.contains(index.row())) {     
>         color = Qt::red;
>         color.setRgb(255, 144, 16);
>         color.setHsv (32, 239, 255);   
>         return QColor(color);
>       }
>
>       if (VectorExclusionVariables[index.column()-1]) {     
>         color = Qt::red;
>         color.setRgb(255, 144, 16);
>         color.setHsv (32, 239, 255);   
>         return QColor(color);
>       }
>
>       if (ConjuntoRegistrosIncorrectos.contains(index.row())) {
>         if ((VariablesAImputar[index.row()].contains(index.column()
> -1))  && (!FmeVariablesAsociadas->EsVariableImputable(index.column()
> -1)))
>           return QColor(Qt::magenta); 
>         return QColor(Qt::red);      
>       }
>
>       if (MatrizImputacion[index.row()][index.column()-1])  return 
> QColor(Qt::yellow); 
>    
>       if (ConjuntoRegistrosDonantes.contains(index.row())) {
>         color = Qt::cyan;
>         color.setRgb(87, 205, 255);
>         color.setHsv (198, 168, 255);      
>         return QColor(color);
>       }else   return QColor(Qt::white);    
>     }
>
>     return QVariant();
>   }
>
>
> Could this be the reason why so late?
>
>
> ----Mensaje original----
> De: aberaud at infflux.com
> Recibido: 03/02/2009 15:32
> Para: <qt-interest at trolltech.com>
> Asunto: Re: [Qt-interest] Show QTableView is a very slow?
>
> Hi,
>
> We can't give you any answer without some more information. Did you 
> derive the QTableView class ? Do you have big calculations in its 
> showEvent() ? Do you use a QItemDelegate with a heavy paintEvent() 
? 
> Did 
> you connect the
> tab change to one or several slots ?
>
> Regards,
>
> Alex
>
>
> SALOMEHER at terra.es a écrit :
>   
>> Hi,
>> I have an application that displays a number of Tab of a 
>>     
> QTabWidget. 
>   
>> Each Tab has a QTableView whose model is a huge matrix. When I go 
on 
>>     
> a 
>   
>> Tab to display this takes a lot, why is this so? may be because 
the 
>> view has many colors?
>>
>> Regards.
>>
>>
>> *Ahora también puedes acceder a tu correo Terra desde el móvil.*
>> *Infórmate pinchando*** aquí.** 
>> <http://ad.doubleclick.net/clk;77451406;6134080;d?http://www.
correo.
>>     
> movistar.es/do/isp/assistant/login?isp=terra>
>   
> 
------------------------------------------------------------------------
>   
>> _______________________________________________
>> Qt-interest mailing list
>> Qt-interest at trolltech.com
>> http://lists.trolltech.com/mailman/listinfo/qt-interest
>>   
>>     
>
>
>   


-- 
BERAUD Alexandre
Ingénieur Développement

Infflux - Informatique & Flux
Tel: 01 49 57 92 00 - Fax : 01 49 57 92 01
Mail: aberaud at infflux.com
Visitez notre site :  www.infflux.com


_______________________________________________
Qt-interest mailing list
Qt-interest at trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-interest





Ahora también puedes acceder a tu correo Terra desde el móvil.
Infórmate pinchando aquí.






More information about the Qt-interest-old mailing list