Skip to content

Spanish

A forum for those speaking Spanish
505 Topics 1.8k Posts
  • Ayuda con señales

    Unsolved
    2
    0 Votes
    2 Posts
    987 Views
    juankiJ

    Hola

    Veo que usas python, y yo con python me llevo francamente mal, por lo que no te puedo dar ningún ejemplo.

    Las señales pueden llevar parámetros, pero el SLOT que las recibe tiene que tenerlos también. La señal clicked del botón no la puedes usar para pasarle parámetros a la otra ventana.

    Si entendí bien tu problema, se me ocurre que puedes hacer varias cosas. Puedes crear un SLOT que reciba la señal del botón y desde ese SLOT:

    Emitir una señal que tu hayas creado en la que le pases los parámetros adecuados. O bien, en vez de usar señales, añadir a la ventana unos setters y llamarlos desde el SLOT.

    Espero haberme explicado bien.

    Un saludo

  • validacion, con expresiones regulares

    2
    0 Votes
    2 Posts
    1k Views
    juankiJ

    Hola

    Pues realmente no tengo ni idea de expresiones regulares, sí, nunca las he usado :/

    Pero he encontrado esta web que me ha parecido, cuanto menos, interesante, hasta la he añadido a marcadores XD

    http://jarroba.com/busqueda-de-patrones-expresiones-regulares/

    Un saludo

  • 0 Votes
    3 Posts
    4k Views
    AlbertoA

    Al final guardando cada valor de las dos bases de datos en QStrings funcionaba:

    QString _Telefono = seleccionar2.value(8).toByteArray().constData(); QString _Tecnico_Asignado = seleccionar2.value(0).toByteArray().constData(); QString _Estado_Solicitud = seleccionar2.value(7).toByteArray().constData();

    Así podía usar este código sin problema:

    QSqlQuery guardar_s; guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (N_Solicitud, Fecha_Emision, Unidad_Hospitalaria," "Codigo_Equipo, Equipo, Marca)" "VALUES (:N_Solicitud, :Fecha_Emision, :Unidad_Hospitalaria, :Codigo_Equipo, :Equipo," ":Marca)"); guardar_s.bindValue(":N_Solicitud", _N_Solicitud); guardar_s.bindValue(":Fecha_Emision", _Fecha_Emision); guardar_s.bindValue(":Unidad_Hospitalaria", _Unidad_Hospitalaria); guardar_s.bindValue(":Codigo_Equipo", _Codigo_Equipo); guardar_s.bindValue(":Equipo", _Equipo); guardar_s.bindValue(":Marca", _Marca);

    Insertaba los valores de las dos bases de datos en la base Empresa, pero si usaba este otro con más valores no funcionaba:

    QSqlQuery guardar_s; guardar_s.prepare("INSERT INTO Solicitudes_Trabajo (N_Solicitud, Fecha_Emision, Unidad_Hospitalaria, Codigo_Equipo," "Equipo, Marca, Modelo, N_Serie, Localizacion, Unidad_Tecnica, Peticionario, Telefono, " "Descripcion_Solicitud, Tecnico_Asignado, Tipo_Solicitud, Estado_Solicitud) " "VALUES (:N_Solicitud, :Fecha_Emision, :Unidad_Hospitalaria, :Codigo_Equipo, :Equipo, :Marca, :Modelo," ":N_Serie, :Localizacion, :Unidad_Tecnica, :Peticionario, :Telefono, :Descripcion_Solicitud," ":Tecnico_Asignado, :Tipo_Solicitud, :Estado_Solicitud)"); guardar_s.bindValue(":N_Solicitud", _N_Solicitud); guardar_s.bindValue(":Fecha_Emision", _Fecha_Emision); guardar_s.bindValue(":Unidad_Hospitalaria",_Unidad_Hospitalaria); guardar_s.bindValue(":Codigo_Equipo", _Codigo_Equipo); guardar_s.bindValue(":Equipo", _Equipo); guardar_s.bindValue(":Marca", _Marca); guardar_s.bindValue(":Modelo", _Modelo); guardar_s.bindValue(":N_Serie", _N_Serie); guardar_s.bindValue(":Localizacion", _Localizacion); guardar_s.bindValue(":Unidad_Tecnica", _Unidad_Tecnica); guardar_s.bindValue(":Peticionario", _Peticionario); guardar_s.bindValue(":Telefono", _Telefono); guardar_s.bindValue(":Descripcion_Solicitud", _Descripcion_Solicitud); guardar_s.bindValue(":Tecnico_Asignado", _Tecnico_Asignado); guardar_s.bindValue(":Tipo_Solicitud", "a"); guardar_s.bindValue(":Estado_Solicitud", _Estado_Solicitud);

    Me daba el error: 12.ERROR: QSqlError("", "Parameter count mismatch", "").

    Pensaba que quizás eran demasiados valores para Qt Creator. Pero al final, después de muchas pruebas me dí cuenta que estaba intentando insertar un valor en la columna existente Localización con un INSERT INTO Solicitudes_Trabajo (Localizacion).
    Lo explico por si a alguien más le sale ese mismo error que pruebe a revisar todos los campos y columnas en busca de algún pequeño fallo en alguna letra o alguna tilde.

  • Entendiendo Layout en Qt Designer

    4
    0 Votes
    4 Posts
    3k Views
    juankiJ

    Hola

    @Heinserberg said:

    ... jugando con los layout logre bastante lo que quería , nose si de la manera correcta pero al cambiar el tamaño de la ventana los botones se mantienen a la derecha ...

    Bueno, si hace lo que buscabas, en principio ya está. Lo único que quizás pueda hacerse con menos layouts, pero eso es algo que irás viendo a medida que diseñes más ventanas y vayas entendiendo su funcionamiento.

    Para esto no hay más que practicar, personalmente cuando me inicié con Qt, me costó mucho el tema de los layuot, pero ahora, después de haber diseñado muchas ventanas, las hago mucho más rápido, aunque de vez en cuando me encuentro con alguna que me cuesta diseñar XD

    Un saludo

  • Error al encontrar librerias

    2
    0 Votes
    2 Posts
    1k Views
    juankiJ

    Hola

    Poderse se puede, claro, busca en google algo así como "qt compilación estática".

    Tampoco es muy complicado hacerlo funcionar tal como lo estás haciendo ahora, tan solo tienes que acompañar junto a tu ejecutable las librería que necesita y funcionará en cualquier ordenador.

    Un saludo

  • 0 Votes
    4 Posts
    5k Views
    AlbertoA

    Resuelto.
    Intenté muchas cosas para solucionar el problem, algunas incluian la utilización de next() que me faltaba en el código de mi respuesta anterior pero continuaba saliendo el error:

    QSqlQuery::value: not positioned on a valid record

    Al final creé un nuevo proyecto con una base de atos nuevas y funciona correctamente con este código:

    hospital=QSqlDatabase::addDatabase("QSQLITE"); hospital.setDatabaseName("C:/Sqlite3/Hospital.sqlite"); if(hospital.open()){ qDebug()<<"4.Se ha conectado a la base de datos Hospital"; }else{ qDebug()<<"4.ERROR. No se ha conectado a la base de datos Hospital"; } QSqlQuery mostrar; mostrar.prepare("SELECT*FROM Partes WHERE N_Parte=:ID"); mostrar.bindValue(":ID",ui->lineEditN_Parte->text()); if(mostrar.exec()) { qDebug()<<"5.Los datos del parte se han mostrado correctamente"; }else{ qDebug()<<"5.ERROR. Los datos del parte no se han mostrado correctamente"; qDebug()<<"5.ERROR:"<<mostrar.lastError(); } mostrar.next(); ui->tableWidget->setRowCount(15); QStringList Campos; Campos<<"Fecha de Emisión"<<"Unidad Hospitalaria"; ui->tableWidget->setVerticalHeaderLabels(Campos); ui->tableWidget->insertColumn(0); ui->tableWidget->setColumnCount(1); ui->tableWidget->setItem(0, 0, new QTableWidgetItem(mostrar.value(1).toByteArray().constData())); ui->tableWidget->setItem(2, 0, new QTableWidgetItem(mostrar.value(2).toByteArray().constData()));

    Así que supongo que el problema estaba en la base de datos anterior, quizás en las columnas, quizás en las filas, quizás en los valores o quizás en el nombre de cada uno de estos elementos.
    Lo importante es que el código que adjunto en esta respuesta funciona correctamente, de modo que si alguien tiene un problema parecido espero que esto le ayude.

    Muchas gracias!

  • 0 Votes
    2 Posts
    2k Views
    AlbertoA

    Resuelto.
    El problema era que cuando hace el primer remove los indices cambian, así que cuando elimino el indice 1 los indices pasan de ser 0,1,2 a ser 0,1. El segundo remove intenta eliminar el indice 2 pero este dejó de existir cuando hace el primer remove.
    Así que la solución es esta:

    Partes::Partes(QWidget *parent) : QDialog(parent), ui(new Ui::Partes) { ui->setupUi(this); ui->Pestanas->setCurrentIndex(0); ui->Pestanas->removeTab(1); ui->Pestanas->removeTab(1); }

    Or:

    Partes::Partes(QWidget *parent) : QDialog(parent), ui(new Ui::Partes) { ui->setupUi(this); ui->Pestanas->setCurrentIndex(0); ui->Pestanas->removeTab(2); ui->Pestanas->removeTab(1); }

    Como puedo marcar este post como resuelto?

  • 0 Votes
    1 Posts
    955 Views
    No one has replied
  • Saludos de The Qt Latinoamerica!

    5
    0 Votes
    5 Posts
    1k Views
    CastilloRicardoC

    @Julio-Espinoza Pues este 2015 hemos visto un creciente interes en Latinoamerica. Anteriormente Qt no era muy popular pero ahora lo esta siendo. Es cuestion de tiempo que nos podamos expander un poco mas al Mercado latinoamericano dependiendo de la respuesta del publico. Seguramente tendremos algo como Developer Days pronto.

  • 0 Votes
    3 Posts
    1k Views
    Karen ZurutuzaK

    @juanki Gracias!

  • Rotar QIcon

    5
    0 Votes
    5 Posts
    2k Views
    L

    Gracias por la info!
    Voy a intentar con QImage como reemplazo y te aviso como me fue.. Saludos!

  • 0 Votes
    3 Posts
    2k Views
    J

    @juanki Gracias por tu respuesta, voy a estudiar la propuesta. Hace mil que no uso las clases abstractas y aun más el polimorfismo, me va a tocar quitarle el polvo a los apuntes de la universidad...

    ¿Tenéis más propuestas?

  • Tutoriales Qt5?

    5
    0 Votes
    5 Posts
    7k Views
    J

    La eterna pregunta del Millón de Dolares ¿Por dónde empiezo?

    El Tutorial más básico sobre Qt EN ESPAÑOL que existe en la red es

    Aprenda Qt4 Desde Hoy Mismo.

    Se puede conseguir a través de google o en la siguiente dirección:
    http://www.lawebdelprogramador.com/cursos/QT/7375-Aprenda-Qt4-desde-hoy-mismo.html

    Es un tutorial muy pero muy completo sobre el mundo de Qt. De autor Anónimo realizado en Octubre de 2010. Viejo pero bueno :)

    Aprovecho la ocasión para darle las GRACIAS al autor Anónimo que se tomó la molestia de realizar dicho Tutorial y colocarlo en la red gratis. Dios lo bendiga. Necesitamos más gente así.

    Por supuesto, ha pasado mucho tiempo y han ocurrido muchas cosas desde el 2010 y una de esas cosas es QML el cual dicho tutorial no menciona nada al respecto. Supongo que para la fecha en que fue elaborado no había nacido QML o estaba dando los primeros pasos.

    Estamos en la era post-PC, toda la tecnología actual es móvíl y por supuesto la gente de Qt ha desarrollado una herramienta para trabajar dicha tecnología: QML. Para familiarizarse con los nuevos términos que trae dicha tecnología (anchors, bind, transition, states, etc) y empezar a entenderla un poco recomiendo la página:

    http://tipesoft.com/recursos-para-iniciados-en-qml/

    es lo más sencillo que he encontrado en español. Claro, conciso y simple. Muy bueno para empezar.

    Aparte de aprender QML para el desarrollo de las nuevas aplicaciones, me parece que es muy necesario estar familiarizado con tecnologías tales como HTML5, Javascript y CSS3, así como OpenGL. Dichas tecnologías son muy usada por QML y su conocimiento nos permitirá navegar en aguas profundas .

  • Código con QString lento

    2
    0 Votes
    2 Posts
    2k Views
    N

    He estado haciendo mas prueba, y me encuentro en una situación que no entiendo, como he dicho antes el código es mas lento en QT que en java, para el archivo de pruebas que tengo en java lo procesa en 343 mili segundos y en QT lo procesa en 550 mili segundos, en principio no parece mucho, pero este código lo ejecuto dentro de la aplicación a la que pertenece y lo procesa en 2300 mili segundos. Esto me descoloca mucho mas, y no se que esta pasando, alguien tiene alguna idea de que pasa?

  • Aprendiendo a usar QThreadPool

    2
    0 Votes
    2 Posts
    1k Views
    H

    Hace poco tuve que usar QThreadPool, el uso básico sería este:

    // Puede ser una función tradicional o un método estático. // func puede recibir hasta un máximo de 5 parámetros. void func(QMutex *mutex, otrosParametros) { mutex->lock(); // Hacer lo que haya que hacer aquí. mutex->unlock(); } int N = 1000; QThreadPool threadPool; // El mutex se usa para bloquear la modificación simultanea // de prametros globales. QMutex mutex; for (int i = 0; i < int; i++) { QtConcurrent::run(&threadPool, func, &mutex, otrosParametros); } threadPool.waitForDone(); // Hacer algo con el resultado de los threads.
  • 0 Votes
    3 Posts
    8k Views
    juankiJ

    Hola

    Como siempre digo, lo mejor que puedes hacer es acostumbrarte a consultar la documentación, en el caso de Qt es muy clara y completa.

    Para convertir el número tienes el método int toInt(bool * ok = 0, int base = 10) de la clase QString:
    http://doc.qt.io/qt-5/qstring.html#toInt

    En el QLineEdit puedes usar una máscara para asegurarte que solo se introducen números:
    http://doc.qt.io/qt-5/qlineedit.html#inputMask-prop

    Para acceder al contenido del QLineEdit el método a usar es text():
    http://doc.qt.io/qt-5/qlineedit.html#text-prop

    Un saludo

  • Reportes

    2
    0 Votes
    2 Posts
    809 Views
    juankiJ

    Hola

    Pues en este mismo foro se ha hablado varias veces del tema, revisa los mensajes antiguos que algo hay.

    Un saludo

  • como insertar widget a qt en windows

    4
    0 Votes
    4 Posts
    2k Views
    juankiJ

    @Giowidow said:

    o gracias juan me has ayudado, aunque me surgio una duda, cuando dices "a mano" quieres decir pegar los archivos en la misma carpeta de tu proyectos y mandarlos a llamar?

    Exacto, y luego creo el gráfico desde código. Y no te olvides de añadir los archivos al proyecto (Add Existing Files...).

    Saludos

  • Problema con QThread y QSerialport

    3
    0 Votes
    3 Posts
    1k Views
    BrikinhosB

    Si necesitas tutoriales de Qt tengo unos cuantos manuales, 2 en castellano y 3 en inglés, si eso me envías un correo a brikinhos@gmail.com

  • 0 Votes
    5 Posts
    3k Views
    BrikinhosB

    @Sergio

    @Sergio said:

    Hola @juanki

    Muchas gracias, intentare a ver si me sale. En un principio intente pasarle un puntero a la clase de comunicaciones, donde en el constructor de la misma le paso el puntero ui del mainwindow.

    Por otra parte, lo de los porcentajes intentare hacerlo en los dias proximos y si tengo algún problema ya vuelvo a preguntar.

    Un saludo.

    Hola, a ver si puedo ayudarte. Supongo que tu clase Comunicaciones obtiene los datos de tu placa Arduino y los guardará en algún sitio, podrías intentar crear una instancia de Comunicaciones en la clase MainWindows, utilizar métodos de Comunicaciones que obtengan esos datos, y como en la clase MainWindows tienes el elemento "ui" desde el que accedes a los widgets pues les vas dando esos valores (Lo de pasar ui a otra clase es un poco raro, no lo he visto en ningún sitio).

    Ahora el problema está en que necesitas usar algo que funcione en tiempo real, es decir, que te dé continuamente los datos de la placa. Yo en este tema no te puedo ayudar porque lo di en Java, pero parece ser que hay un método que indica cuándo cambia la señal de un puerto, con lo que puedes actualizar tu gráfico cada vez que cambia. Te he encontrado este ejemplo a ver si te sirve: http://www.advsofteng.com/doc/cdcppdoc/realtimedemoqt.htm

    Si se da el caso de que necesites recibir, por ejemplo, 4 datos a la vez, y cuando estén mostrarlo en el gráfico, necesitarás usar concurrencia. Un saludo.