Ayuda con QPaintEvent [Qt C++]

Iniciado por x7uk, 27 Mayo 2013, 15:32 PM

0 Miembros y 1 Visitante están viendo este tema.

x7uk

Hola a todos!!
Espero que se encuentren bien!

Estoy implementando el componente QPainter dentro de mi aplicacion C++ usando Qt, me he encontrado con algun que otro inconveniente, lo detallo a ver si alguien me puede orientar un poco a solucionarlo!

Dentro de mi aplicacion tengo una compleja funcion "timer_Tick" la cual, entre otras cosas, genera un numero que va de 0 a 1.4 (osea pasamos por 0.4, 0.8, 1.0, 1.2, etc)

El QPainter solo debe dibujar (en determinada parte de la ventana) un puntito (Uso drawPoint para eso). Las coordenadas de ese puntito dependen del numero que genera la funcion timer_Tick cada 160 milisegundos.

Aqui el problema:

El componente QPainter solo funciona si lo metemos dentro de QPaintEvent* quedando asi fuera de la funcion timer_Tick, entonces no sé como pasarle a QPaintEvent el numero que genera timer_Tick y debe tener en cuenta al dibujar el puntito. (Ya que como dije de este numero depende la coordenada del punto).

Otro problema es que, como timer_Tick genera el numero cada 160 milisegundos, el grafico que genera QPainter deberia actualizarse tambien cada este tiempo, es otra cosa que no sé como hacer.

Aqui les dejo como tengo el código de mi MainWindow:

Código (cpp) [Seleccionar]
void MainWindow::paintEvent(QPaintEvent * osc){

    QPixmap pixmap(466,141);
    pixmap.fill(Qt::transparent);
    QPainter painter(&pixmap);
    painter.drawPixmap(0,0, pixmap);
    painter.setPen(Qt::green);

    painter.drawPoint(110,110); //esas coordenadas son las que necesito cambiar segun "timer_Tick"

    a->addPixmap(pixmap);
    ui->osc_line->setScene(a);

}


Código (cpp) [Seleccionar]
void MainWindow::timer_Tick(void){

//codigo de mi funcion timer_Tick (es muy largo pero funciona bien)

}


Tanto el evento del QPainter y la funcion timer_Tick estan en el mainwindow.cpp, bueno no sé todo se puede cambiar, no sé como solucionar esos inconvenientes, ojala alguien me pueda tirar una idea!!

Gracias de antemano!
backtrack/hispanic-community-member/x7uk