Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - SLUGER

#1
Ademas de que no eres la única persona que piensa de la misma manera, creo que tienes razón :) Aunque es un tanto ilógico estar creando getters y setters que por lo pronto no ( y creo que nunca ) utilizare >.<
#2
Hola,

Estoy creando un programa que usa varias clases, el problema es que no se como programar las clases. Para que quede mas claro, un ejemplo; tengo una clase Rectangulo, esta clase se encarga de dibujar un rectángulo de dos colores distintos, un color para el contorno y otro color para el relleno. Los colores ya estan definidos dentro de la aplicacion; Rojo para el contorno y Verde para el relleno. Como ya sé que colores quiero que tenga mi rectangulo, deberia de establecerlos como constantes de la clase Rectangulo:
Código (cpp) [Seleccionar]

class Rectangulo
{
    public:
        Rectangulo();
    private:
        static const int _penColor = Rojo;
        static const int _brushColor = Verde;
};


O debería de establecerlos como propiedades de la clase y ya luego en la función main tener definidas las constantes:
Código (cpp) [Seleccionar]

class Rectangulo
{
    public:
        Rectangulo(int penColor, int brushColor);
        // ... getters y setters de los colores ...
    private:
        int _penColor;
        int _brushColor;
};

...

#define PENCOLOR Rojo
#define BRUSHCOLOR Verde

void main()
{
     Rectangulo rect1(PENCOLOR, BRUSHCOLOR)
}

Y otra cosa, en el ultimo código, a pesar de que siempre en mi código voy a utilizar el constructor, para que definir getters y setter, ademas de que ya se establecieron los colores dentro de la aplicación.
#3
En el siguiente codigo tengo implementado una flecha que une dos figuras(shapes). Esta flecha esta dividida por dos secciones; La primera es la linea en si, la que une a las dos figuras y la segunda es la cabeza de flecha o el apuntador.

La linea de la primera sección es dibujada desde el centro del primer elemento hasta el centro del segundo elemento.
La punta principal del apuntador esta posicionada en el centro del segundo elemento. /*[0]*/

/*[0]*/ Este es el problema, si el elemento en el cual se encuentra el apuntador es demasiado grande, el apuntador podria no mostrarse. Por ejemplo:



En el ejemplo el elemento fue configurado para que el color de rellenado fuera transparente y se pudiera ver el apuntador, en otro caso no se veria el apuntador.

Bueno entonces que es lo que pido? Lo que quiero saber es si es posible de alguna forma identificar el punto de interseccion entre la linea de la primera sección y el segundo elemento. Como lo hacen en el ejemplo que viene con QtCreator llamado diagramscene, pero en este ejemplo utilizan la interseccion entre lineas y lo que yo necesito es una linea y alguna figura.

Código (cpp) [Seleccionar]
QLineF::IntersectType intersectType =
        polyLine.intersect(centerLine, &intersectPoint);




Aqui el codigo de la funcion paint:
Código (cpp) [Seleccionar]

{
   painter->setPen(QPen(Qt::black, 2));
   painter->setBrush(QBrush(Qt::black, Qt::SolidPattern));

// Line
   // El primer punto se localiza en el centro del primer elemento
   QPointF p1(_firstShape->pos().x() + (_firstShape->boundingRect().width() / 2),
              _firstShape->pos().y() + (_firstShape->boundingRect().height() / 2));

   // El segundo punto se localiza en el centro del segundo elemento
   QPointF p2(_secondShape->pos().x() + (_secondShape->boundingRect().width() / 2),
              _secondShape->pos().y() + (_secondShape->boundingRect().height() / 2));

   // Creamos la linea
   QLineF line(p1, p2);

   // Dibujamos la linea
   painter->drawLine(line);

// Arrow Head
   double angle = ::acos(line.dx() / line.length());
   if (line.dy() >= 0)
       angle = TwoPi - angle;
   qreal arrowSize = 10;

   // Calculamos los dos puntos de la arrow head
   QPointF destArrowP1 = p2 + QPointF(sin(angle - Pi / 3) * arrowSize,
                                             cos(angle - Pi / 3) * arrowSize);
   QPointF destArrowP2 = p2 + QPointF(sin(angle - Pi + Pi / 3) * arrowSize,
                                             cos(angle - Pi + Pi / 3) * arrowSize);

   // Dibujamos la arrow head
   painter->drawPolygon(QPolygonF() << line.p2()/*[0]*/ << destArrowP1 << destArrowP2);
   // Simplemente cambiando line.p2() por el punto de interseccion estaria solucionado el problema
}


Resultado del codigo:

Como pueden ver solo se puede ver un apuntador porque los otros estan ocultos por el elemento.

Saludos, Sluger.
#4
Programación General / Nuevo proyecto
29 Agosto 2011, 04:37 AM
*Primero que nada pido disculpas si este tema no debe de ir aquí*

Comento que estoy en busca de personas que gusten de programar en C++/Qt en ratos libres. Que estén deseosas por participar y
aportar a este proyecto que básicamente/inicialmente consiste en un editor de diagramas de flujo utilizando el Framework
Graphics View de Qt.

El proyecto ya esta algo "avanzado" por no decir que esta casi en ceros; por ejemplo ya tengo programado varios módulos
básicos e importantes a utilizar, así como la GUI. Además el proyecto tiene varias "novedades" inexistentes en los editores
actuales(creo).

Tareas a realizar:
    - Buscar y encontrar soluciones a problemas.
    - Programar.
    - Analizar. *
    - Diseñar. *
    (*) No necesariamente.

Requerimientos:
    - Conocer C++/Qt o el Framework Graphics View de Qt.
    - Apegarse a los ideales actuales del proyecto.

Recompensa:
    - Créditos. (Nombre del programador en el "About")

¡Que quede claro que no se requieren de personas que a la semana abandonen el proyecto! de ser así, no se obtendrá la "recompensa".
Ademas cabe destacar que esto no es del todo profesional, solo se busca "aprender" a desarrollar algún software en equipo.
Los detalles del proyecto se darán a conocer a aquellas personas que realmente entren.

Enviar la solicitud por MP o respondiendo esta entrada, se tiene que explicar por que se quiere entrar.

Se espera un ambiente agradable y de aprendizaje y no de presiones.

Saludos :D Cualquier duda comentar....
#5
Cita de: pucheto en 12 Mayo 2011, 02:32 AM
Me interpretaste mal, dije que D tiene sintaxis mas linda que C++.
Cierto, perdón  :-[
Por cierto si te gusto por que lo dejaste?

@Novlucker
Que yo sepa entre mas viejos :p sean los lenguajes mejor, mas experiencia.

La única diferencia que yo encuentro entre C++ y D es su sintaxis mas "bonita" y que es mas seguro con respecto a varias cosas: garbage collection (creo que el C++0x tiene algo parecido), bounds cheking, los arrays conocen su longitud, las variables se inicializan por si solas, varias cosas jeje, no puedo entrar mucho en detalles por que apenas estoy empezando con el D que no soy un experto como para defenderlo a fondo.

La mayoría de lo antes mencionado lo tiene C++ implementado en alguna librería como por ejemplo la STL esto quiere decir como ya mencione dependencia, supongamos, que queremos crear una aplicación QT, pues utilizamos las librerias QT, pero como nosotros sabemos utilizar listas/vectores/etc en la STL también tenemos que incluirla y esto no me agrada demasiado.

Con respecto a java, creo que me mataran por decir esto pero, ami en lo personal las aplicaciones que he probado que estuviesen hechas en java me van algo lentas, y C# es propietario aunque para esto esta mono. Ademas prefiero algo que sea compilado a lenguaje maquina.

Con respecto a la salida laboral en la actualidad nadie le gana al C#/C++/Java/PHP.....
#6
Cita de: pucheto en 11 Mayo 2011, 13:17 PM
Los 2 motivos q dieron antes q yo no les veo mucho sentido... El primero pq solamente se refiere al presente y pasado del lenguaje.
Y el segundo pq en algun momento el 60% del software estubo programada en otra cosa, y aparecio C++.
D se puede linkear con C y C++, eso te deja, con poco esfuerzo en general, usar codigo viejo.

El lenguaje esta muy bueno, pero no trae nada nuevo, es un C++ con una sintaxis mas linda...

Para mi no va a tener exito pq propone lo mismo q C++0x, tiene una evolucion muy lenta, y no propone nada nuevo.

Me duele decirlo pq es un lenguaje q me gusto mucho.

La sintaxis mas liada?... pues ami lo que me gusta de D es que su sintaxis es mucho mas sencilla.... por ejemplo un hash en C++ se hace con la STL u otra librería, mientras que en D simplemente se realiza de la manera: int[string] hash; asi no se depende de la librería. Uff y ni se diga de la programación genérica con eso de los parámetros en tiempo de compilación con un simple !(type) y listo.
#7
Foro Libre / Re: Donde vives??
10 Mayo 2011, 21:44 PM
Cita de: cker en 10 Mayo 2011, 19:19 PM
saludos desde  donde vivo.
en la ciudad de chihuahua chih. mexico

uu yo tambien =D, estudio en el cecytech 6, y tu?
#8
Buenas, pues eso, ustedes que opinan sobre aprender este lenguaje frente a C++.

En mi opinion este lenguaje es el futuro. Cuando programo en el, no se porque tan pocas personas lo conocen si es como Python y C convinados. Para mi es lo maximo. Pero no se si meterme de lleno en este lenguaje o seguir ampliando los horizontes con C++.

Algunos links con informacion por si estan interesados en saber un poquito mas acerca de este lenguaje para que puedan opinar:
http://es.wikipedia.org/wiki/D_(lenguaje_de_programación)
http://en.wikipedia.org/wiki/D_(programming_language)
http://www.digitalmars.com/d/2.0/index.html
http://www.digitalmars.com/d/2.0/comparison.html
http://www.amazon.com/exec/obidos/ASIN/0321635361/classicempire
#9
Estoy tratando de insertar en un QLineEdit un superindice pero se insertan caracteres "raros". Como se deben de insertar superidices? Acaso se puede?  :-(.

Código (cpp) [Seleccionar]

ui->LineEdit->setText("⁴");

Aqui mismo tambien se ven caracteres raros asi que pongo una imagen de un superindice(.com ).


PD: Fue la primera imagen que encontre.  :silbar:

EDITO:
Solo lo he conseguido con QTextEdit:
Código (cpp) [Seleccionar]

QTextCharFormat format;
format.setVerticalAlignment(QTextCharFormat::AlignSuperScript);
ui->textEdit->mergeCurrentCharFormat(format);


Gracias, si quieren eliminen el post.
#10
Se la dejare en "release", porque la verdad la clase esta muy propensa a que se ingresen otros datos no deseados, además de que evito crashes. Y como dice Littlehorse es una buena practica hacerlo y logra que el programador pueda buscar y controlar los errores mucho mas fácilmente.