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ú

Temas - SLUGER

#1
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.
#2
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.
#3
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....
#4
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
#5
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.
#6
Bueno, por ejemplo, tenemos la clase números  :P en donde solo queremos que se ingresen los números del 1-9 y no el 0.
Código (cpp) [Seleccionar]

class numeros
{
private:
int numero;
public:
numeros(int numeros);
};


Ahora, es responsabilidad de la clase(el constructor que es el que inicializara la variable según el parámetro) verificar que no exista 0, o es responsabilidad del programador que utiliza la clase verificar si existe un 0 y luego si no existe pasarle como parámetro la variable.
#7
ASM / System("pause"); de C en ASM[DUDA]
11 Junio 2009, 06:01 AM
Main:
        ;Mostrar mensaje 'Presione una tecla para continuar . . . '
        ORG 100H
        MOV AH, 09H
        MOV EDX, MesG
        INT 21H
        ;Leer caracter
        MOV AH, 08H
        INT 21H
        INT 20H
Datos:
        MesG DB "Presione una tecla para continuar . . . ", 24H


Tengo las siguientes dudas en el code:
1.-¿Que es lo que significa ORG?
2.-¿Porque donde declaro el identificador MesG tengo que poner 24H? (si no me tira unos simbolos raros)
3.-¿Porque el FASM me compila a .COM y no a .EXE?
4.-¿Haci es como se hace?
#8
ASM / Duda Fasm
31 Mayo 2009, 01:25 AM
¿Porque cuando compilo con Fasm, Avira me salta diciéndome que el .exe es un TR/Crypt.XPACK.Gen?

salu2, SLUGER