Ver Mensaje Individual
  #8 (permalink)  
Antiguo 15/09/2016, 12:16
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: Qt.QTableView. Varias dudas

Cita:
Hola eferion:

Con esa interfaz es imposible recuperar los iconos ya que no hay ningún método público que devuelva un QIcon.
La verdad es que las pruebas las hago en CodeBlocks, y para no andar configurándolo para que funcione con Qt, la clase que estaba haciendo devolvía un int en lugar de un QIcon, suficiente para mis pruebas. Luego he intentado adaptarla en el mensaje y se me pasó corregir eso

Pero bueno, al lío. La cosa es que no he pillado la idea de la clase que planteas. Es decir, estas líneas, qué han de hacer?:
Código C++:
Ver original
  1. if( it == _icons.end() )
  2.             {
  3.             // algoritmo para cargar el icono
  4.             // ...
  5.  
  6.             // Se añade el icono a la caché
  7.             it = _icons.insert(std::make_pair(type,icon));

Yo por ahora he hecho esto, pero creo que no es para nada la idea que me estás planteando:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <map>
  3.  
  4. using namespace std;
  5.  
  6. enum class Sexo
  7. {
  8.     undefined, male, female
  9. };
  10.  
  11. std::map<Sexo,string>init()
  12. {
  13.     std::map<Sexo,string>temp;
  14.     temp.insert(std::pair<Sexo, string>(Sexo::undefined,"No definido"));
  15.     temp.insert(std::pair<Sexo, string>(Sexo::male,"Niño"));
  16.     temp.insert(std::pair<Sexo, string>(Sexo::female,"Niña"));
  17.     return temp;
  18. }
  19.  
  20. class IconoWareHouse
  21. {
  22.     private:
  23.         static std::map<Sexo,string>_icons;
  24.  
  25.     public:
  26.         IconoWareHouse() {}
  27.         static string GetIcon(Sexo type)
  28.         {
  29.             auto it = _icons.find(type);
  30.             cout<<&it->second<<endl;//compruebo que es la misma variable
  31.             if( it == _icons.end() )
  32.             {
  33.             // algoritmo para cargar el icono
  34.             // ...
  35.  
  36.             // Se añade el icono a la caché
  37.             //it = _icons.insert(std::make_pair(type,icon));
  38.             }
  39.             cout<<(int)it->first<<endl;
  40.             return it->second;
  41.         }
  42. };
  43.  
  44. std::map<Sexo,string> IconoWareHouse::_icons(init());
  45.  
  46. //Funcion principal
  47. int main()
  48. {
  49.     IconoWareHouse I;
  50.     cout<<I.GetIcon(Sexo::female)<<endl;
  51.     IconoWareHouse II;
  52.     cout<<II.GetIcon(Sexo::female)<<endl;
  53.  
  54.     return 0;
  55. }

Como ves, en este caso he sustituido el
__________________
Mi calculadora en Qt