Cargando



Programación Multiplataforma en C++ y Qt bajo Entorno GNU/Linux

Qt es una biblioteca multiplataforma que se utiliza para desarrollar software. Qt permite desarrollar aplicaciones para sistemas operativos Linux, Mac OS X, Windows, y dispositivos smartphone con Android, IOs y Windows CE.


mar 30 2015 17:30
Profesional
El entorno original permite programar en C++, pero existen bindings (adaptación de una biblioteca para ser usada en otro lenguaje de programación) como son:

PyQt y PythonQt para Python, Qt Jambi para Java y Qyoto y Kimono para C#, entre otros


Existen cuatro versiones de la biblioteca Qt, Enterprise, Professional, Indie Mobile y Community esta ultima gratuita, si quieres descargarlas entra aquí.

Algunas empresas que utilizan Qt y aplicaciones desarrolladas con Qt son:

Google Earth, KDE, Adobe Photoshop, la Agencia Espacial Europea, Siemens, Volvo, Walt Disney Animation Studios, Skype, Samsung,Philips, Panasonic, VirtualBox, etc.

Instalación de Qt Community

Vamos a la web de descarga https://www.qt.io/do...ad-open-source/sin importar que sistema operativo utilicemos la web autodetectara y obtendremos la biblioteca Qt SDK y Qt Creator el software IDE para desarrollo que corresponda a nuestro sistema operativo. En este tutorial lo instalaremos en Linux, pero en Windows se instala como cualquier otro software.

Una vez descargado el instalador desde la ventana de terminal procedemos a instalar con los siguientes comandos.

Debian/Ubuntu/Mint
sudo apt-get install build-essential libgl1-mesa-dev
Fedora/RHEL/CentOS
sudo yum groupinstall "C Development Tools and Libraries"
sudo yum install mesa-libGL-devel
sudo chmod +x qt-opensource-linux-x64-1.6.0-8-online.run
sudo ./qt-opensource-linux-x64-1.6.0-8-online.run
Podemos luego cambiar y configurar el compilador de C++, depurador y otras herramientas de desarrollo.

programacion.jpg


Vamos al menú Tools (Herramientas) > Options (Opciones) y a la pestaña Kit, allí veremos si tenemos configurado el sdk de Qt en este caso Qt 5.4.1.

programacion2.jpg


Luego veremos en la pestaña Compilers que compilador o compiladores tenemos disponibles.

programacion3.jpg


Vemos que disponemos del compilador GCC (GNU Compiler Collection) para 32 y 64 bit.

Qt Creator detecta automáticamente los compiladores que están registrados en el sistema operativo. Se puede agregar compiladores para construir aplicaciones utilizando otros compiladores o utilizando versiones adicionales de los compiladores detectados automáticamente:

  • GNU Compiler Collection (GCC) es un compilador para Linux y Mac OS X.
  • MinGW (Minimalist GNU for Windows) es una versión de GCC y para su uso en el desarrollo de aplicaciones nativas de Windows en Microsoft Windows. MinGW se distribuye junto con Qt Creator y Qt SDK para Windows.

Mediante los compiladores GCC y MinGW podemos realizar software multiplataforma.

Creamos una Aplicación con Qt

Vamos a New Project y seleccionamos Qt Widget Application, esto implica que crearemos una típica ventana de aplicación de escritorio que contendrá la aplicación.

Pulsa en la imágen para ampliarla


A continuación se abrirá una pantalla donde indicaremos el nombre del proyecto, luego seleccionaremos el compilador que utilizaremos y finalmente indicaremos los nombres de los archivos y clases de nuestra aplicación.

Pulsa en la imágen para ampliarla


El archivo *.ui es código XML y es el que contiene el diseño de la ventana, botones, cajas de textos y demás elementos, un fichero de cabecera (.h) que contiene funciones de sistema y las del desarrollador, también genera un archivo de implementación *.cpp, donde se encuentra el código funcional de la aplicación o de esa ventana.

Al finalizar accedemos IDE o Entorno integrado de Desarrollo y vemos el archivo de cabecera en modo edición.

El Entorno integrado de Desarrollo se utiliza para el diseño de ventanas o formularios para la aplicación, que permite arrastrar y ubicar rápidamente widgets, diálogos y elementos que seran el diseño de pantalla que vera el usuario al ejecutar la aplicación. Los formularios o ventanas son totalmente funcionales y pueden ser previsualizados inmediatamente para asegurarse como se verá la aplicación, para ello hacemos clic en la flecha Verde para ejecutar o bien pulsamos

Ctrl+R


Pulsa en la imágen para ampliarla


El archivo main.cpp es el primero en ejecutarse y el archivo frmsoft.cpp es el que contiene el código c+ de la ventana. Mientras que frmsoft.ui es el diseño, si hacemos clic en este archivo y luego en Design veremos el modo diseño.

programacion7.jpg


Podemos observar a la izquierda las herramientas y controles para arrastrar y colocar en la ventana aplicación que se ubica en el centro.

A la derecha vemos los elementos en forma Jerárquica y debajo el papel de propiedades de cada elemento seleccionado. Esto es muy similar a otros entornos como Visual studio.net o Netbeans.

Situemos algunos controles
  • Un TextEdit, cambiamos la propiedad objectName y le asignamos el nombre txtMensaje.
  • Un PushButton, cambiamos la propiedad objectName y le asignamos el nombre btpresionar y cambiamos la propiedad Text y le asignamos Presionar.
  • Un PushButton, cambiamos la propiedad objectName y le asignamos el nombre btborrar y cambiamos la propiedad Text y le asignamos Borrar.

programacion8.jpg


Si volvemos al modo edición haciendo clic en Edit podemos ver en el archivo frmsoft.ui como cambia el xml:
<?xml version="1.0" encoding="UTF-8"?>

<ui version="4.0">

<class>frmsoft</class>

//Ventana principal

<widget class="QMainWindow" name="frmsoft">
  <property name="geometry">

   <rect>
    <x>0</x> //Posición x en el escritorio

    <y>0</y> //Posición y en el escritorio
    <width>400</width> //Ancho ventana

    <height>300</height> //Alto ventana
   </rect>

  </property>
  <property name="windowTitle">

   <string>frmsoft</string>
  </property>

//boto Presionar

  <widget class="QWidget" name="centralWidget">
   <widget class="QPushButton" name="btpresionar"> //nombre del botón

    <property name="geometry">
     <rect>

      <x>80</x> // posicion x en la ventana
      <y>180</y> // posicion y en la ventana

      <width>80</width> // alto del botón
      <height>23</height>// ancho del botón

     </rect>
    </property>

    <property name="text">
     <string>Presionar</string> //texto del botón

    </property>
   </widget>


Para el resto de los controles es lo mismo, todas estas propiedades se pueden cambiar en tiempo de diseño o mientras se ejecuta ven forma dinámica.

A continuación iremos al diseño haciendo clic en frmsoft.ui y en Design, para programar la funcionalidad del botón Presionar. Seleccionamos el elemento al que queremos añadir un evento y luego presionamos el botón derecho del ratón y vamos a la opción Go to Slot.

programacion9.jpg


Aparecerá un cuadro de dialogo para seleccionar el evento por ejemplo clicked (cliqueado), pressed (presionado) y muchos otros. Seleccionamos clicked y nos abrirá el código de funcionalidad de la ventana de frmsoft.cpp con la función.

Vamos a mostrar un mensaje al presionar el botón, parea invocar la caja de texto deberé utilizar la clase ui que contiene todos los elementos de la ventana actual.

ui.elemento.propiedad mediante opciones desplegables nos permite seleccionar el elemento y la propiedad

Veamos el código:

programacion10.jpg

#include "frmsoft.h"

#include "ui_frmsoft.h"
frmsoft::frmsoft(QWidget *parent) :

    QMainWindow(parent),
    ui(new Ui::frmsoft)

{
    ui->setupUi(this);

}
frmsoft::~frmsoft()

{
    delete ui;

   
}

//funcion boton cliqueado

void frmsoft::on_btpresionar_clicked()
{

    ui->txtMensaje->setText(“Bienvenido a Qt y C++”);
}

programacion11.jpg

void frmsoft::on_btborrar_clicked()

{
    ui->txtMensaje->clear();

}

Vamos a modificar el código del botón usamos una variable tipo string

void frmsoft::on_btpresionar_clicked()

{
    QString html;

    html += "<H2>LISTA DE PRECIOS</H2>";

    html += "<H3>Actualizada al 26/03/2015</H3><br>";

    html += "<table border=1 width=100%>"
                   "<thead>"

                   "<tr>"
                   "<th>Codigo</th>"

                   "<th>Producto</th>"
                   "<th>Stock</th>"

                   "<th>Precio</th>"
                   "   </tr>"

                   "</thead>";

      html += "<tr> <td>0001</td> "
            "<td>Teclado</td> "

            "<td>50</td> "
            "<td>&euro;9,90 </td>"

            "</tr>"
            "<tr> "

            "<td>0002</td> "
            "<td>Mouse</td> "

            "<td>30</td> "
            "<td>&euro;6.90 </td>"

           "</tr>"
            "<tr> "

            "<td>0003</td> "
            "<td> All In One Hp Omni </td> "

            "<td>5</td> "
            "<td>&euro;300</td>"

           "</tr>"            ;
            html += "<table>";

            html += "<table>";

  ui->txtMensaje->setText(html);

}

programacion12.jpg


Si queremos compilar el proyecto vamos al menú Build y seleccionamos Buil All o bien las teclas Ctrl+shift+B, esto generara el archivo ejecutable con todas sus dependencias, si cambiamos de compilador podremos generar una versión para otra plataforma o sistema operativo.

Qt posee una extensa librería interna como de terceros para gestionar bases de datos, con clases y herramientas incluye soporte para programación de redes, OpenGL, multimedia, Internet, XML, bases de datos, gestión de hilos y multitarea, api para manipulación de archivos.

¿Te ayudó este Tutorial?


2 Comentarios

Pues no soluciona lo más importante: ¿Cómo compilar para la otra plataforma? Muy bonito eso de decir que simplemente elige otro compilador, pero no es suficiente, yo no lo he conseguido y no soy tonto, he instalado y puesto el compilador mingw en mi QTCreator de ubuntu para que compile para windows y nada de nada, ni en 32 ni en 64 bits, no produce ningún ejecutable, y no es algo fácil porque no hay nada en internet que lo explique bien. Parece que por ahora lo que se podrá hacer es copiar tu proyecto al sistema operativo Windows, instalar QTCreator también en Windows y compilar allí.


Sergio Culoccioni
may 10 2015 01:06

Pues no soluciona lo más importante: ¿Cómo compilar para la otra plataforma? Muy bonito eso de decir que simplemente elige otro compilador, pero no es suficiente, yo no lo he conseguido y no soy tonto, he instalado y puesto el compilador mingw en mi QTCreator de ubuntu para que compile para windows y nada de nada, ni en 32 ni en 64 bits, no produce ningún ejecutable, y no es algo fácil porque no hay nada en internet que lo explique bien. Parece que por ahora lo que se podrá hacer es copiar tu proyecto al sistema operativo Windows, instalar QTCreator también en Windows y compilar allí.

 

Es cierto la solucion es esta que has dicho en realidad se debe importar el proyecto en Windows y compilar alli, ya que utiliza librerias dlls queno tenemos en Linux, todas las soluciones de instalar mingw u otra cosa no funcionan. Es posible que un ejecutable Qt Windows funcione bajo Wine. Aqui me falta la segunda parte donde mostrare esto de importar y adaptar en Windows.

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

Hola! Si no encuentras algún tutorial en el buscador de Solvetic, Solicítalo Aquí

X