Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.

Basic Qt Programming Tutorial/es: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Category:HowTo]]<br />[[Category:Developing_with_Qt::General]]<br />[[Category:Tutorial]]
[[Category:HowTo]]
[[Category:Developing_with_Qt::General]]
[[Category:Tutorial]]


[toc align_right=&quot;yes&amp;quot; depth=&quot;2&amp;quot;]
[toc align_right="yes" depth="2"]


'''Español''' [[Basic_Qt_Programming_Tutorial|English]] [[Basic_Qt_Programming_Tutorial_SimplifiedChinese|简体中文]] [[Basic_Qt_Programming_Tutorial_Persian|فارسی]] [[Temel_Qt_Programlama_Egitimi|Türkçe]]
'''Español''' [[Basic_Qt_Programming_Tutorial|English]] [[Basic_Qt_Programming_Tutorial_SimplifiedChinese|简体中文]] [[Basic_Qt_Programming_Tutorial_Persian|فارسی]] [[Temel_Qt_Programlama_Egitimi|Türkçe]]
Line 19: Line 21:
Intentaremos hacer una aplicación básica con una sola ventana que muestra un QLabel y un QLineEdit. Para ello sólo hay que seguir estos pasos:
Intentaremos hacer una aplicación básica con una sola ventana que muestra un QLabel y un QLineEdit. Para ello sólo hay que seguir estos pasos:


# Abre Qt Creator.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152033-f24040e3.jpg|Start Qt-Creator]]&quot;:http://gallery.theharmers.co.uk/picture.php?/22/category/7
# Abre Qt Creator.
# Ve a File-&gt;&quot;New File or Project…&quot; en el menú.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152033-f24040e3.jpg|Start Qt-Creator]]":http://gallery.theharmers.co.uk/picture.php?/22/category/7
# Elige Qt Gui Application y ponle un nombre.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-ea9bb58a.jpg|Select project type]]&quot;:http://gallery.theharmers.co.uk/picture.php?/23/category/7
# Ve a File->"New File or Project…" en el menú.
# Pon un nombre al proyecto, por ejemplo &quot;qt-tutorial-01&amp;quot;.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-8dabd337.jpg|Choose project name]]&quot;:http://gallery.theharmers.co.uk/picture.php?/24/category/7
# Elige Qt Gui Application y ponle un nombre.
# Selecciona una o varias versiones de Qt. Una versión desktop build será apropiada para este tutorial.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-35f9e7cb.jpg|Choose Qt build to target]]&quot;:http://gallery.theharmers.co.uk/picture.php?/25/category/7
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-ea9bb58a.jpg|Select project type]]":http://gallery.theharmers.co.uk/picture.php?/23/category/7
# Nombra a la clase base QWidget (también puedes dejar el nombre que salga por defecto y usarlo más adelante en lugar de QWidget).<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-26f92911.jpg|Select project generation options]]&quot;:http://gallery.theharmers.co.uk/picture.php?/26/category/7
# Pon un nombre al proyecto, por ejemplo "qt-tutorial-01".
# Haz clic en &quot;Finish&amp;quot; cuando hayas comprobado las opciones del proyecto.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-95ce9f30.jpg|Check project summary]]&quot;:http://gallery.theharmers.co.uk/picture.php?/27/category/7
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-8dabd337.jpg|Choose project name]]":http://gallery.theharmers.co.uk/picture.php?/24/category/7
# Selecciona una o varias versiones de Qt. Una versión desktop build será apropiada para este tutorial.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-35f9e7cb.jpg|Choose Qt build to target]]":http://gallery.theharmers.co.uk/picture.php?/25/category/7
# Nombra a la clase base QWidget (también puedes dejar el nombre que salga por defecto y usarlo más adelante en lugar de QWidget).
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-26f92911.jpg|Select project generation options]]":http://gallery.theharmers.co.uk/picture.php?/26/category/7
# Haz clic en "Finish" cuando hayas comprobado las opciones del proyecto.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503152034-95ce9f30.jpg|Check project summary]]":http://gallery.theharmers.co.uk/picture.php?/27/category/7


Al terminar se creará un proyecto con los siguientes cuatro archivos:
Al terminar se creará un proyecto con los siguientes cuatro archivos:
Line 38: Line 46:
Vamos a editar el archivo widget.ui primero:
Vamos a editar el archivo widget.ui primero:


# Haz clic en él y se abrirá el archivo pasando a modo diseño. Deberías ver una ventana vacía. Ahora haz esto:<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-af1ea190.jpg|Open designer]]&quot;:http://gallery.theharmers.co.uk/picture.php?/28/category/7
# Haz clic en él y se abrirá el archivo pasando a modo diseño. Deberías ver una ventana vacía. Ahora haz esto:
# Desde la barra de herramientas a la izquierda, arrastra un Label hasta el centro de la ventana.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-661b1ceb.jpg|Add label]]&quot;:http://gallery.theharmers.co.uk/picture.php?/29/category/7
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-af1ea190.jpg|Open designer]]":http://gallery.theharmers.co.uk/picture.php?/28/category/7
# Haz lo mismo con un Line Edit y colócalo a la derecha del Label. No importa la posición exacta.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-8c16787b.jpg|Add line edit]]&quot;:http://gallery.theharmers.co.uk/picture.php?/30/category/7
# Desde la barra de herramientas a la izquierda, arrastra un Label hasta el centro de la ventana.
# Haz clic en el fondo de la ventana para no tener nada seleccionado.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-5084f96c.jpg|Select parent widget]]&quot;:http://gallery.theharmers.co.uk/picture.php?/31/category/7
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-661b1ceb.jpg|Add label]]":http://gallery.theharmers.co.uk/picture.php?/29/category/7
# En la barra superior haz clic en &quot;Lay out Horizontall&amp;quot; o presiona Ctrl+h para añadir un bloque de disposición horizontal. De este modo el bloque se encargará de redimensionar automáticamente tus componentes si hay cambios de tamaño.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-01e7e207.jpg|Apply horizontal layout]]&quot;:http://gallery.theharmers.co.uk/picture.php?/32/category/7
# Haz lo mismo con un Line Edit y colócalo a la derecha del Label. No importa la posición exacta.
# Haz doble clic en el Label y cambiará a modo edición. Escribe en el &quot;Me llamo:&quot;<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-4e8b7939.jpg|Change label text]]&quot;:http://gallery.theharmers.co.uk/picture.php?/33/category/7
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-8c16787b.jpg|Add line edit]]":http://gallery.theharmers.co.uk/picture.php?/30/category/7
# Haz clic en el fondo de la ventana para no tener nada seleccionado.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-5084f96c.jpg|Select parent widget]]":http://gallery.theharmers.co.uk/picture.php?/31/category/7
# En la barra superior haz clic en "Lay out Horizontall" o presiona Ctrl+h para añadir un bloque de disposición horizontal. De este modo el bloque se encargará de redimensionar automáticamente tus componentes si hay cambios de tamaño.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-01e7e207.jpg|Apply horizontal layout]]":http://gallery.theharmers.co.uk/picture.php?/32/category/7
# Haz doble clic en el Label y cambiará a modo edición. Escribe en el "Me llamo:"
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-4e8b7939.jpg|Change label text]]":http://gallery.theharmers.co.uk/picture.php?/33/category/7
# Pulsa Ctrl+s para guardar.
# Pulsa Ctrl+s para guardar.
# Haz clic en el botón de modo Edit en el panel a la izquierda para volver a ese modo. Probablemente verás el contenido xml del archivo UI. Ciérralo.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-abad6378.jpg|Switch to Edit mode]]&quot;:http://gallery.theharmers.co.uk/picture.php?/34/category/7
# Haz clic en el botón de modo Edit en el panel a la izquierda para volver a ese modo. Probablemente verás el contenido xml del archivo UI. Ciérralo.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503154826-abad6378.jpg|Switch to Edit mode]]":http://gallery.theharmers.co.uk/picture.php?/34/category/7


Ahora abre el archivo widget.h y modifícalo para que sea igual que:
Ahora abre el archivo widget.h y modifícalo para que sea igual que:


<code><br />#ifndef WIDGET_H<br />#define WIDGET_H
<code>
#ifndef WIDGET_H
#define WIDGET_H


#include &lt;QWidget&amp;gt;
#include <QWidget>


namespace Ui {<br /> class Widget;<br />}
namespace Ui {
class Widget;
}


class Widget : public QWidget<br />{<br /> Q_OBJECT
class Widget : public QWidget
{
Q_OBJECT


public:<br /> explicit Widget(QWidget *parent = 0);<br /> ~Widget();
public:
explicit Widget(QWidget *parent = 0);
~Widget();


void setName(const QString &amp;name);<br /> QString name() const;
void setName(const QString &amp;name);
QString name() const;


private:<br /> Ui::Widget *ui;<br />};
private:
Ui::Widget *ui;
};


#endif // WIDGET_H<br /></code>
#endif // WIDGET_H
</code>


Ahora edita el archivo .cpp correspondiente para que coincida con este:
Ahora edita el archivo .cpp correspondiente para que coincida con este:


<code><br />#include &quot;widget.h&amp;quot;<br />#include &quot;ui_widget.h&amp;quot;
<code>
#include "widget.h"
#include "ui_widget.h"


Widget::Widget(QWidget *parent) :<br /> QWidget(parent),<br /> ui(new Ui::Widget)<br />{<br /> ui-&gt;setupUi(this);<br />}
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}


Widget::~Widget()<br />{<br /> delete ui;<br />}
Widget::~Widget()
{
delete ui;
}


void Widget::setName(const QString &amp;name)<br />{<br /> ui-&gt;lineEdit-&gt;setText(name);<br />}
void Widget::setName(const QString &amp;name)
{
ui->lineEdit->setText(name);
}


QString Widget::name() const<br />{<br /> return ui-&gt;lineEdit-&gt;text();<br />}<br /></code>
QString Widget::name() const
{
return ui->lineEdit->text();
}
</code>


Para terminar edita main.cpp :
Para terminar edita main.cpp :


<code><br />#include &lt;QApplication&amp;gt;<br />#include &quot;widget.h&amp;quot;
<code>
#include <QApplication>
#include "widget.h"


int main(int argc, char '''argv[])<br />{<br /> QApplication a(argc, argv);<br /> Widget w;
int main(int argc, char '''argv[])
<br /> w.setName(&quot;Slim Shady&amp;quot;);
{
<br /> w.show();
QApplication a(argc, argv);
<br /> return a.exec&amp;amp;#40;&amp;#41;;<br />}<br /></code>
Widget w;
<br />h2. De pie y corriendo: Compilando y ejecutando la aplicación
 
<br />Ahora compila (con el icono del martillo abajo a la izquierda o con Ctrl-Shift-B) y ejecuta la aplicación (botón verde &quot;play&amp;quot;). Verás aparecer algunos mensajes en el panel &quot;Compile Output&amp;quot; abajo mientras se compila.<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503160137-3e61f249.jpg|Compiling the project]]&quot;:http://gallery.theharmers.co.uk/picture.php?/35/category/7
w.setName("Slim Shady");
<br />Este es el aspecto de la aplicación al ejecutarse:<br />&quot;[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503160137-aac48922.jpg|The running application]]&quot;:http://gallery.theharmers.co.uk/picture.php?/36/category/7
 
<br />Como puedes ver la función main() es muy sencilla. Todo lo que hacemos es crear una &quot;QApplication&amp;quot;:http://doc.qt.nokia.com/latest/qapplication.html y luego un Widget (la ventana que modificamos en el diseñador y a la que añadimos un comportamiento en el código con las funciones name() y setName()).
w.show();
<br />Después invocamos a setName en el widget. Este a partir de un puntero al &quot;QLineEdit&amp;quot;:http://doc.qt.nokia.com/latest/qlineedit.html que colocamos en el diseño llama al método &quot;setText()&quot;:http://doc.qt.nokia.com/latest/qlineedit.html#text-prop().
 
<br />Finalmente mostramos el widget y entramos en el bucle de eventos invocando a a.exec&amp;amp;#40;&amp;#41;.
return a.exec();
<br />Una vez que entiendas como funciona este simple programa puedes empezar a añadirle florituras como conexiones signal/slot.
}
<br />h2. Ver también
</code>
<br />''' [[Introduction_to_Qt_Quick_for_Cpp_developers|&quot;Introduction to Qt Quick for C++ Developers&amp;quot;]]<br />''Note:'' The paper above is deprecated. Its content is now part of [[Introduction_to_Qt_Quick|&quot;Introduction to Qt Quick&amp;quot;]].<br />* [[How_to_Use_QPushButton|&quot;How to Use QPushButton&amp;quot;]]
 
h2. De pie y corriendo: Compilando y ejecutando la aplicación
 
Ahora compila (con el icono del martillo abajo a la izquierda o con Ctrl-Shift-B) y ejecuta la aplicación (botón verde "play"). Verás aparecer algunos mensajes en el panel "Compile Output" abajo mientras se compila.
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503160137-3e61f249.jpg|Compiling the project]]":http://gallery.theharmers.co.uk/picture.php?/35/category/7
 
Este es el aspecto de la aplicación al ejecutarse:
"[[Image:http://gallery.theharmers.co.uk/upload/2011/05/03/thumbnail/TN-20110503160137-aac48922.jpg|The running application]]":http://gallery.theharmers.co.uk/picture.php?/36/category/7
 
Como puedes ver la función main() es muy sencilla. Todo lo que hacemos es crear una "QApplication":http://doc.qt.nokia.com/latest/qapplication.html y luego un Widget (la ventana que modificamos en el diseñador y a la que añadimos un comportamiento en el código con las funciones name() y setName()).
 
Después invocamos a setName en el widget. Este a partir de un puntero al "QLineEdit":http://doc.qt.nokia.com/latest/qlineedit.html que colocamos en el diseño llama al método "setText()":http://doc.qt.nokia.com/latest/qlineedit.html#text-prop().
 
Finalmente mostramos el widget y entramos en el bucle de eventos invocando a a.exec().
 
Una vez que entiendas como funciona este simple programa puedes empezar a añadirle florituras como conexiones signal/slot.
 
h2. Ver también
 
''' [[Introduction_to_Qt_Quick_for_Cpp_developers|"Introduction to Qt Quick for C++ Developers"]]
''Note:'' The paper above is deprecated. Its content is now part of [[Introduction_to_Qt_Quick|"Introduction to Qt Quick"]].
* [[How_to_Use_QPushButton|"How to Use QPushButton"]]

Revision as of 09:28, 25 February 2015


[toc align_right="yes" depth="2"]

Español English 简体中文 فارسی Türkçe

Introducción

En este tutorial se explica en detalle como dar los primeros pasos programando con Qt usando el entorno de desarrollo Qt Creator.

Si quieres aprender a hacer potentes interfaces de usuario con las últimas tecnologías este no es tu tutorial. Lo único que se persigue aquí es proporcionar una introducción a quienes están empezando para que pierdan el miedo.

Empezaremos creando un nuevo proyecto de Qt, modificando el código para mostrar una interfaz gráfica (GUI) muy simple. Una vez que la aplicación básica esté funcionando, la modificaremos para hacer algunas cosas útiles.

Para comenzar, instala el Qt SDK, o, en Linux, consigue una copia de Qt y un compilador.

Primer contacto: Crear un nuevo proyecto

Intentaremos hacer una aplicación básica con una sola ventana que muestra un QLabel y un QLineEdit. Para ello sólo hay que seguir estos pasos:

  1. Abre Qt Creator.

"Start Qt-Creator":http://gallery.theharmers.co.uk/picture.php?/22/category/7

  1. Ve a File->"New File or Project…" en el menú.
  2. Elige Qt Gui Application y ponle un nombre.

"Select project type":http://gallery.theharmers.co.uk/picture.php?/23/category/7

  1. Pon un nombre al proyecto, por ejemplo "qt-tutorial-01".

"Choose project name":http://gallery.theharmers.co.uk/picture.php?/24/category/7

  1. Selecciona una o varias versiones de Qt. Una versión desktop build será apropiada para este tutorial.

"Choose Qt build to target":http://gallery.theharmers.co.uk/picture.php?/25/category/7

  1. Nombra a la clase base QWidget (también puedes dejar el nombre que salga por defecto y usarlo más adelante en lugar de QWidget).

"Select project generation options":http://gallery.theharmers.co.uk/picture.php?/26/category/7

  1. Haz clic en "Finish" cuando hayas comprobado las opciones del proyecto.

"Check project summary":http://gallery.theharmers.co.uk/picture.php?/27/category/7

Al terminar se creará un proyecto con los siguientes cuatro archivos:

  • main.cpp
  • widget.h
  • widget.cpp
  • widget.ui

Aprendiendo a gatear: Editar los archivos del proyecto

Vamos a editar el archivo widget.ui primero:

  1. Haz clic en él y se abrirá el archivo pasando a modo diseño. Deberías ver una ventana vacía. Ahora haz esto:

"Open designer":http://gallery.theharmers.co.uk/picture.php?/28/category/7

  1. Desde la barra de herramientas a la izquierda, arrastra un Label hasta el centro de la ventana.

"Add label":http://gallery.theharmers.co.uk/picture.php?/29/category/7

  1. Haz lo mismo con un Line Edit y colócalo a la derecha del Label. No importa la posición exacta.

"Add line edit":http://gallery.theharmers.co.uk/picture.php?/30/category/7

  1. Haz clic en el fondo de la ventana para no tener nada seleccionado.

"Select parent widget":http://gallery.theharmers.co.uk/picture.php?/31/category/7

  1. En la barra superior haz clic en "Lay out Horizontall" o presiona Ctrl+h para añadir un bloque de disposición horizontal. De este modo el bloque se encargará de redimensionar automáticamente tus componentes si hay cambios de tamaño.

"Apply horizontal layout":http://gallery.theharmers.co.uk/picture.php?/32/category/7

  1. Haz doble clic en el Label y cambiará a modo edición. Escribe en el "Me llamo:"

"Change label text":http://gallery.theharmers.co.uk/picture.php?/33/category/7

  1. Pulsa Ctrl+s para guardar.
  2. Haz clic en el botón de modo Edit en el panel a la izquierda para volver a ese modo. Probablemente verás el contenido xml del archivo UI. Ciérralo.

"Switch to Edit mode":http://gallery.theharmers.co.uk/picture.php?/34/category/7

Ahora abre el archivo widget.h y modifícalo para que sea igual que:

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

namespace Ui {
 class Widget;
}

class Widget : public QWidget
{
 Q_OBJECT

public:
 explicit Widget(QWidget *parent = 0);
 ~Widget();

void setName(const QString &amp;name);
 QString name() const;

private:
 Ui::Widget *ui;
};

#endif // WIDGET_H

Ahora edita el archivo .cpp correspondiente para que coincida con este:

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
 QWidget(parent),
 ui(new Ui::Widget)
{
 ui->setupUi(this);
}

Widget::~Widget()
{
 delete ui;
}

void Widget::setName(const QString &amp;name)
{
 ui->lineEdit->setText(name);
}

QString Widget::name() const
{
 return ui->lineEdit->text();
}

Para terminar edita main.cpp :

#include <QApplication>
#include "widget.h"

int main(int argc, char '''argv[])
{
 QApplication a(argc, argv);
 Widget w;

 w.setName("Slim Shady");

 w.show();

 return a.exec();
}

h2. De pie y corriendo: Compilando y ejecutando la aplicación

Ahora compila (con el icono del martillo abajo a la izquierda o con Ctrl-Shift-B) y ejecuta la aplicación (botón verde "play"). Verás aparecer algunos mensajes en el panel "Compile Output" abajo mientras se compila. "Compiling the project":http://gallery.theharmers.co.uk/picture.php?/35/category/7

Este es el aspecto de la aplicación al ejecutarse: "The running application":http://gallery.theharmers.co.uk/picture.php?/36/category/7

Como puedes ver la función main() es muy sencilla. Todo lo que hacemos es crear una "QApplication":http://doc.qt.nokia.com/latest/qapplication.html y luego un Widget (la ventana que modificamos en el diseñador y a la que añadimos un comportamiento en el código con las funciones name() y setName()).

Después invocamos a setName en el widget. Este a partir de un puntero al "QLineEdit":http://doc.qt.nokia.com/latest/qlineedit.html que colocamos en el diseño llama al método "setText()":http://doc.qt.nokia.com/latest/qlineedit.html#text-prop().

Finalmente mostramos el widget y entramos en el bucle de eventos invocando a a.exec().

Una vez que entiendas como funciona este simple programa puedes empezar a añadirle florituras como conexiones signal/slot.

h2. Ver también

"Introduction to Qt Quick for C++ Developers" Note: The paper above is deprecated. Its content is now part of "Introduction to Qt Quick".