TODOPIC

Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: bigluis en 30 de Octubre de 2012, 11:39:11

Título: Video Tutorial Programación Qt C++
Publicado por: bigluis en 30 de Octubre de 2012, 11:39:11

Luego Iré Traduciendo más videos

Y Aquí el PlayList
http://www.youtube.com/playlist?list=PL2VKAl1jp3SPi0VHHD7Ku9GOri7VagI8p (http://www.youtube.com/watch?v=wcnWemP8oFU&list=PL2VKAl1jp3SPi0VHHD7Ku9GOri7VagI8p&feature=plpp_play_all)

https://www.youtube.com/watch?v=8FytWxfr2ls&list=PLkMd51xTELZLS4NQl71uOPvMPRveD9C1o (https://www.youtube.com/watch?v=8FytWxfr2ls&list=PLkMd51xTELZLS4NQl71uOPvMPRveD9C1o)
Título: Re: Video Tutorial Programación Qt C++
Publicado por: dom124 en 30 de Octubre de 2012, 11:52:04
 ((:-)) ((:-)) ((:-)) ((:-)) ((:-))

Realmente te felicito por la iniciativa y al menos yo quedo a la espera de nuevos videos!!!

Saludos

Carlos
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 31 de Octubre de 2012, 15:34:28
Hola este es el segundo Vídeo que traduzco


y disculpen horrores ortograficos o gramaticales
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 31 de Octubre de 2012, 18:30:59
Muchas Gracias  (((:-))), yo había visto esto vídeos sin traducción pero como tengo quemado en estos momentos mi chip multilenguaje, entonces no los comprendía.

Lastima que los Romanos cuando eran dueños de casi toda Europa, no hubieran implementado por obligación el Latín, así no tuviéramos el problema de la diversidad de idiomas, bueno pero por lo menos muchos idiomas se derivan del Latín y el nuestro el castellano es uno de lo mas hablados en el mundo aunque estamos lejos en aportes escritos y científicos, nos gana el Portugués con solo 2 países en contra de muchos de habla hispana

Entiendo un poquito ingles escrito pero hablado casi nada  :8}, aunque nunca es tarde para aprender ...
Título: Re: Video Tutorial Programación Qt C++
Publicado por: Miquel_S en 01 de Noviembre de 2012, 18:20:46
Hola instale qt4 pero no se donde escribir el codigo que debe realizar lo que vayas poniendo en la frame, y en el manual del programa no me sale nada que me diga como empezar.
Alguien puede ayudarme.

Gracias!
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 01 de Noviembre de 2012, 19:02:07
Pienso que para que nos iniciemos en la programacion con GUI  sobre PC (windows/linux) propongo crear una pequeña aplicación en conjunto, podría ser por ejemplo una ventana que capture y envié datos por el puerto serial con un botón para enviar y otro para recibir datos, ademas de colocar los datos de llegada y salida en un historial, para luego expandirlo y crear algo similar a octoplus terminal http://www.octoplus.com.co/foros/index.php?topic=46.0

(http://www.octoplus.com.co/images/terminal/img8.png)

Proyecto Hyperterminal Linux del mismo autor quien esta traduciendo los videos

http://www.qtforum.org/article/37460/qextserialport-example-hyperterminal-linux.html

Pero en mi caso solo uso Windows
Título: Re: Video Tutorial Programación Qt C++
Publicado por: Miquel_S en 01 de Noviembre de 2012, 21:09:32
Yo para empezar no se donde escribir codigo
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 02 de Noviembre de 2012, 00:29:53
Para Editar los archivos debes seleccionar Edit en la parte izquierda superior y luego el archivo que deseas editar.
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 02 de Noviembre de 2012, 21:15:05
Hola amigos este es el tercer video Tutorial, en esta ocasión decidí crear el video desde cero en vez de simplemente traducirlo, espero que lo disfruten.

Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 09 de Noviembre de 2012, 11:01:26
Hola Amigos este es mi Cuarto video tutorial sobre Qt Creator Espero que lo Disfruten


 :-/
Título: Re: Video Tutorial Programación Qt C++
Publicado por: Miquel_S en 09 de Noviembre de 2012, 12:45:08
 ((:-)) Gracias por el aporte.

Miquel_S
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 10 de Noviembre de 2012, 10:44:47
Estoy mirando tus vídeos, como sugerencia podrías por favor aumentar un poquito la resolución, pues no alcanzo a detallar bien el código fuente explicativo.

La versión comercial esta en esta nueva pagina web http://qt.digia.com/Product/ (pues ya no pertenece a Nokia) y la version libre donde la descargo?

Gracias
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 10 de Noviembre de 2012, 13:42:22
Miralos en Youtube, los subi con la mayor resolucion posible. Supongo que el que se incrusta en las paginas web es el video de menor calidad

las versiones libres las puedes encontrar por aqui

http://qt-project.org/downloads (http://qt-project.org/downloads)
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 14 de Noviembre de 2012, 12:12:33
PD: Aprendiendo de tus vídeos  ((:-))

Después de ejecutar qtcreator.exe me pide agregar un compilador MinGW Donde lo consigo?

Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 14 de Noviembre de 2012, 16:23:12
No lo se, no se supone que el instalador de windows trae predefinido el mingw?
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 14 de Noviembre de 2012, 18:15:30
MinGW no se incluye con la instalación de Windows-OS

Estoy descargando la ultima versión de MinGNU-Win, de pronto funciona

http://sourceforge.net/news/?group_id=2435&id=309746

Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 15 de Noviembre de 2012, 21:14:36
Prueba a instalar la version 4.8
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 21 de Noviembre de 2012, 17:53:34
Si!, Mejor instalar la versión 4.8.4, por que la versión 5.x.x requiere VisualBasic

Para la instalación se requiere descargar y ejecutar 3 archivos

0: El compilador
MinGW ("Minimalist GNU for Windows")  
ftp://ftp.qt.nokia.com/misc/MinGW-gcc440_1.zip

1: El IDE (Entorno Desarrollado Integrado) 52MBytes
http://origin.releases.qt-project.org/qtcreator/2.6.0/qt-creator-windows-opensource-2.6.0.exe

2: Las bibliotecas 317MB
http://releases.qt-project.org/qt4/source/qt-win-opensource-4.8.4-mingw.exe

Gracias al video de BigLuis, ya logre correr mi 1er programa en QT sobre Windows, "HolaMundo"  con un boton para desplegar un mensaje y otro para

main.cpp
Código: C++
  1. #include "holamundo.h"
  2. #include <QApplication>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     HolaMundo w;
  8.     w.show();
  9.    
  10.     return a.exec();
  11. }

holamundo.h
Código: C++
  1. #ifndef HOLAMUNDO_H
  2. #define HOLAMUNDO_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class HolaMundo;
  8. }
  9.  
  10. class HolaMundo : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.    
  14. public:
  15.     explicit HolaMundo(QWidget *parent = 0);
  16.     ~HolaMundo();
  17.    
  18. private slots:
  19.     void on_pushButton_HolaMundo_clicked();
  20.  
  21. private:
  22.     Ui::HolaMundo *ui;
  23. };
  24.  
  25. #endif // HOLAMUNDO_H


holamundo.cpp
Código: C++
  1. #include "holamundo.h"
  2. #include "ui_holamundo.h"
  3.  
  4. HolaMundo::HolaMundo(QWidget *parent) :
  5.     QMainWindow(parent),
  6.     ui(new Ui::HolaMundo)
  7. {
  8.     ui->setupUi(this);
  9. }
  10.  
  11. HolaMundo::~HolaMundo()
  12. {
  13.     delete ui;
  14. }
  15.  
  16. void HolaMundo::on_pushButton_HolaMundo_clicked()
  17. {
  18.     ui->labelHolaMundo->setText("hola a todos");
  19.     ui->labelHolaMundo->adjustSize();
  20.  
  21. }


Quiero realizar ahora una pequeña GUI que me permita enviar y recibir datos con un microcontrolador por el puerto serial. Quien me da un impulso
PD:
Estudiando ... http://www.qtforum.org/article/37460/qextserialport-example-hyperterminal-linux.html
Foro de qt http://www.zonaqt.com

Gracias
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 22 de Noviembre de 2012, 14:42:51
Mas videotutoriales

 :-/


Que se puede hacer con QT, pues NINJA-IDE, GOOGLE EARTH etc

http://www.ninja-ide.org/
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 27 de Noviembre de 2012, 16:01:03
Hola amigos

En esta ocasión les traigo 3 nuevos videos sobre Clases y Objetos, espero que les guste.




Recuerden que para verlos con mejor calidad debe usar la pagina web de Youtube
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 03 de Diciembre de 2012, 18:08:14
Siguiendo tus videotutos, gracias

Noticias, nueva versión de Las bibliotecas para QT (317MB) version 4.8.4 Nov 30 2012, (18 días antes de la apocalipsis) Asi que ha descargarlo rapido :lol:

Para la instalación se requiere descargar 3 archivos y ejecutar 2 de ellos , el 3ro es el compilador que se descomprime en la carpeta C:\QT (ver link abajo para las instrucciones)

0: El IDE (Entorno Desarrollado Integrado) Archivo ejecutable de 52MBytes Versión 2.6.2 (Jan 2013)
"http://releases.qt-project.org/qtcreator/2.6.1/qt-creator-windows-opensource-2.6.2.exe"
 
1: Las bibliotecas para Windows-OS con mingw , Archivo ejecutable de 317MB Versión 4.8.4 (Nov 2012)
"http://releases.qt-project.org/qt4/source/qt-win-opensource-4.8.4-mingw.exe"

2: El compilador Archivo de 34MB que se copia en la carpeta de QT
MinGW ("Minimalist GNU for Windows") MinGW-gcc440_1.zip
"http://code.google.com/p/piece-of-c/downloads/detail?name=MinGW-gcc440_1.zip&can=2&q=" (Nuevo enlace de la versión especifica)  MinGW-gcc440_1 no se si aceptara versiones mas recientes, Si Instalan otra versión del compilador me comentan

Para otros sistemas operativos consultar
http://qt-project.org/downloads


Tutorial para configuración del compilador MinGW-gcc44
http://blogzonaqt.blogspot.mx/2012/06/configuracion-qt-creator-compilacion-y.html

Guia de instalacion
http://blogzonaqt.blogspot.mx/2012/06/instalacion-qt-libraries-482-y-qt.html

Nota Qt Version 5.0.x para Windows incluye el compilador y las bibliotecas de Qt pero como es una versión reciente puede generar problemas
Título: Re: Video Tutorial Programación Qt C++
Publicado por: Suky en 03 de Diciembre de 2012, 21:46:39
Gracias por toda la información! Yo en estos días estuve con Qt (como para hacer aplicaciones para Embebedd Linux) y otra guía que utilice fue la siguiente: http://es.scribd.com/doc/98655518/Aprenda-Qt4-Hoy-Mismo

Respecto al MinGW podes bajarte este: http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/

Saludos!
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 25 de Diciembre de 2012, 14:58:00
Actualización del IDE

0: El IDE (Entorno Desarrollado Integrado) Archivo ejecutable de 52MBytes Versión 2.6.2 (Jan 2013)
"http://releases.qt-project.org/qtcreator/2.6.1/qt-creator-windows-opensource-2.6.2.exe"
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 28 de Diciembre de 2012, 22:21:05
Hola amigos, les traigo 3 nueovs videos



Título: Re: Video Tutorial Programación Qt C++
Publicado por: Miquel_S en 28 de Enero de 2013, 18:18:16
Hola, estoy intentando aprender un poco de C++ usando Qt, y he visto que esta la opcion de cambiar el estilo de la aplicacion usando ./age -style  pero no entiendo donde colocarlo.
¿Podeis darme un empujon?

Código: C++
  1. #include <QApplication>
  2. #include <QHBoxLayout>
  3. #include <QSlider>
  4. #include <QSpinBox>
  5.  
  6. int main(int argc, char *argv[])
  7. {
  8.     QApplication app(argc, argv);
  9.    
  10.     QWidget *window = new QWidget;
  11.     window->setWindowTitle("Enter Your Age");
  12.  
  13.     QSpinBox *spinBox = new QSpinBox;
  14.     QSlider *slider = new QSlider(Qt::Horizontal);
  15.     spinBox->setRange(0, 100);
  16.     slider->setRange(0, 100);
  17.  
  18.     QObject::connect(spinBox, SIGNAL(valueChanged(int)),
  19.                      slider, SLOT(setValue(int)));
  20.     QObject::connect(slider, SIGNAL(valueChanged(int)),
  21.                      spinBox, SLOT(setValue(int)));
  22.     spinBox->setValue(0);
  23.  
  24.     QHBoxLayout *layout = new QHBoxLayout;
  25.     layout->addWidget(spinBox);
  26.     layout->addWidget(slider);
  27.     window->setLayout(layout);
  28.  
  29.     window->show();
  30.  
  31.     return app.exec();
  32. }

Gracias.
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 06 de Febrero de 2013, 09:52:57
Ya esta lista la ultima versión de Qt 5.0.1 para Windows-OS que incluye todo (compilador [MinGW 4.7], IDE, y las bibliotecas de Qt) 823 MB :-/

http://qt-project.org/downloads




Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 23 de Febrero de 2013, 19:20:21
BUG
Al lanzar el archivo .exe sin QT V5 genera el siguiente error
(http://i.imgur.com/9bdEq.png)
En el siguiente link da una posible solucion, pero yo NO utilizo la versión sin VisualB

http://qt-project.org/forums/viewthread/23262


Quien tiene el mismo problema?
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 28 de Febrero de 2013, 19:55:34
Eso pasa debido a que necesitas copiar esa libreria dentro del folder de tu aplicacion pero supongo que existe otra opcion. Creo que debe haber una opcion para compilarlo estaticamente sin que necesite esas librerias.

Las librerias las puedes encontrar en la carpeta QT_Path\MinGW\Bin
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 09 de Marzo de 2013, 14:51:57
Hola a todos

En esta ocasion les traigo un proyecto que he estado desarrollando desde hace un año. El nombre del proyecto es jQHEditor, este consiste en un Editor grafico de HTML y CSS lo que permitirá un rápido desarrollo de nuestras aplicaciones y páginas web.

El link del proyecto es el siguiente

https://sites.google.com/site/nicatronicavideos/jqheditor (http://sites.google.com/site/nicatronicavideos/jqheditor)

y un video del proyecto

Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 09 de Marzo de 2013, 15:15:10
Solo que para los que usamos el OS universal Windows aun no lo podemos evaluar  :(

Nota: Universal no significa mejor
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 10 de Marzo de 2013, 20:53:18
Claro que si, el codigo fuente esta en la pagina web que puse arriba en la carpeta que dice "src"

Simplemente tienen que descargar el codigo fuente, reconfigurar para windows y compilarlo
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 14 de Marzo de 2013, 17:56:17
Hola a todos ahora el video de jQHEditor ya tiene sonido
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 04 de Mayo de 2013, 14:36:57
Vídeos lanzados recientemente. Creación de un Text Editor,  8 Vídeos  

Gracias por los videotutos, que dominio de bigluis explicando QT! ((:-))

Vídeo 04.01 Crear Menus sobre el - TextEditor - Qt C++

Vídeo 04.02 Editar Menu Save As - TextEditor - Qt C++

Vídeo 04.03 Save and Open File - TextEditor - Qt C++

Vídeo 04.04 New File - TextEditor - Qt C++ (No permite ver en calidad HD)  :(

Vídeo 04.05 Placeholder - TextEditor - Qt C++ (No permite ver en calidad HD)  :(

Vídeo 04.06 Actions Toolbar- TextEditor - Qt C++

Vídeo 04.07  QSettings - TextEditor - Qt C++

Vídeo  04.08 Menu Open Recent Files - TextEditor - Qt C++


En los próximos vídeos me gustaría ver por ejemplo, buscar palabras dentro del texto, Reemplazar, etc


http://www.youtube.com/user/Nicatronica/videos

Ademas hay una nueva version de QT 5.0.2 de 650 MBytes pero la version 5.0.1 tenia 840Mytes. Por que un menor tamaño?
http://qt-project.org/downloads  :-/
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 04 de Mayo de 2013, 20:12:36
Vídeo 04.02: Incorpora las funciones Guardar  Como en el proyecto de "EDITOR de TEXTO"

04.02 Editar Menu Save As - TextEditor - Qt C++

Código fuente hasta el vídeo 04.02:

Codigo main.cpp

Código: C++
  1. #include "texteditor.h"
  2. #include <QApplication>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     TextEditor w;
  8.     w.show();
  9.    
  10.     return a.exec();
  11. }

Codigo texteditor.h

Código: C++
  1. #ifndef TEXTEDITOR_H
  2. #define TEXTEDITOR_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class TextEditor;
  8. }
  9.  
  10. class TextEditor : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.    
  14. public:
  15.     explicit TextEditor(QWidget *parent = 0);
  16.     ~TextEditor();
  17.    
  18. private slots:
  19.     void on_action_Save_As_triggered();
  20.  
  21. private:
  22.     Ui::TextEditor *ui;
  23.     void saveFile(); // Funcion para SaveFile con Alt+Enter se agrega definicion en texteditor.cpp
  24.     QString currentFile; // Variable global
  25. };
  26.  
  27. #endif // TEXTEDITOR_H

Codigo texteditor.cpp
Código: C++
  1. #include "texteditor.h"
  2. #include "ui_texteditor.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QDebug>
  6.  
  7. TextEditor::TextEditor(QWidget *parent) :
  8.     QMainWindow(parent),
  9.     ui(new Ui::TextEditor)
  10. {
  11.     ui->setupUi(this);
  12. }
  13.  
  14. TextEditor::~TextEditor()
  15. {
  16.     delete ui;
  17. }
  18.  
  19. void TextEditor::on_action_Save_As_triggered()
  20. {
  21.     QString fileName = QFileDialog::getSaveFileName(
  22.         this,
  23.         "Text Editor - Save As",
  24.         "/Users/Jaime/Documents/QT/Text Editor",
  25.         "Text Files (*.txt);All Files (*.*)"
  26.     );
  27.  
  28.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  29.         currentFile = fileName;
  30.         saveFile();
  31.     }
  32. }
  33.  
  34. void TextEditor::saveFile()
  35. {
  36.     QFile file( currentFile );
  37.     if( file.open ( QFile::WriteOnly ) ){ //  Si se puede abrir el archivo en modo escritura
  38.         file.write( ui->plainTextEdit->toPlainText().toUtf8() );
  39.  
  40.     }else{
  41.         QMessageBox::warning(
  42.             this,
  43.             "Text Editor",
  44.             tr( "Cannot write file %1\nError: %2" )
  45.             .arg( currentFile )
  46.             .arg( file.errorString() )
  47.         );
  48.     }
  49.  
  50. }
Título: Re: Video Tutorial Programación Qt C++
Publicado por: Rseliman en 05 de Mayo de 2013, 09:58:13
Excelente Muchas gracias por compartirlo y traducido !!!!! GRACIAS !!! ((:-)) ((:-)) ((:-))
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 05 de Mayo de 2013, 13:03:06
Vídeo 04.03: Incorpora las funciones Guardar y Abrir Archivo en el proyecto de "EDITOR de TEXTO"


04.03 Save and Open File - TextEditor - Qt C++

Tengo un problema al abrir un archivo, en el campo de filtros de archivos aparece los siguiente cadena "xt);;All Files (*.*)",  que estoy codificando mal en on_action_Open_triggered()?
Gracias

Código fuente hasta el vídeo 04.03:

texteditor.cpp
Código: C++
  1. #include "texteditor.h"
  2. #include "ui_texteditor.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QDebug>
  6.  
  7. TextEditor::TextEditor(QWidget *parent) :
  8.     QMainWindow(parent),
  9.     ui(new Ui::TextEditor)
  10. {
  11.     ui->setupUi(this);
  12. }
  13.  
  14. TextEditor::~TextEditor()
  15. {
  16.     delete ui;
  17. }
  18.  
  19. bool TextEditor::on_action_Save_As_triggered()
  20. {
  21.     QString fileName = QFileDialog::getSaveFileName(
  22.         this,
  23.         "Text Editor - Save As",
  24.         "/Users/Jaime/Documents/QT/Text Editor",
  25.         "Text Files (*.txt);;All Files (*.*)"
  26.     );
  27.  
  28.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  29.         currentFile = fileName;
  30.         return saveFile();
  31.     }
  32.     return false;
  33. }
  34.  
  35. bool TextEditor::saveFile()
  36. {
  37.     QFile file( currentFile );
  38.     if( file.open ( QFile::WriteOnly ) ){ //  Si se puede abrir el archivo en modo escritura
  39.         file.write( ui->plainTextEdit->toPlainText().toUtf8() );
  40.         return true;
  41.     }else{
  42.         QMessageBox::warning(
  43.             this,
  44.             "Text Editor",
  45.             tr( "Cannot write file %1.\nError: %2" )
  46.             .arg( currentFile )
  47.             .arg( file.errorString() )
  48.         );
  49.         return false;
  50.     }
  51.  
  52. }
  53.  
  54.  
  55. bool TextEditor::on_action_Save_triggered()
  56. {
  57.     if( currentFile.isEmpty() ) // Si esta vacio
  58.         return on_action_Save_As_triggered();
  59.     else
  60.         return saveFile();
  61. }
  62.  
  63. bool TextEditor::maybeSave(){
  64.     if( ui->plainTextEdit->document()->isModified() ){
  65.         QMessageBox::StandardButton ret =
  66.             QMessageBox::warning(
  67.                 this,
  68.                 "Text Editor",
  69.                 tr( "The Document has been Modified, "
  70.                     "Do you want to save your changes?"
  71.                  ),
  72.                 QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel
  73.             );
  74.         if( ret == QMessageBox::Yes ){
  75.            return on_action_Save_triggered();
  76.         }else if( ret == QMessageBox::Cancel )
  77.            return false;
  78.     }
  79.     return true;
  80. }
  81.  
  82. // Filtros "Text Files (*.txt);;All Files (*.*)"
  83. void TextEditor::on_action_Open_triggered()
  84. {
  85.     if( maybeSave() ){
  86.         QString fileName = QFileDialog::getOpenFileName(
  87.             this,
  88.             "Text Editor - Open File"
  89.             "/Users/Jaime/Documents/QT/Text Editor",
  90.             "Text Files (*.txt);;All Files (*.*)"
  91.  
  92.          );
  93.         if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  94.             QFile file( fileName );
  95.             if ( file.open( QFile::ReadOnly )){ // Se puede leer en modo de lectura
  96.                 ui->plainTextEdit->setPlainText( file.readAll() ); //
  97.                currentFile = fileName;
  98.             }else{
  99.                 QMessageBox::warning(
  100.                     this,
  101.                     "Text Editor",
  102.                     tr( "Cannot read File %1.\nError: %2" )
  103.                     .arg( fileName )
  104.                     .arg( file.errorString() )
  105.                 );
  106.             }
  107.         }
  108.    }
  109. }

texteditor.h
Código: C++
  1. #ifndef TEXTEDITOR_H
  2. #define TEXTEDITOR_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class TextEditor;
  8. }
  9.  
  10. class TextEditor : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.    
  14. public:
  15.     explicit TextEditor(QWidget *parent = 0);
  16.     ~TextEditor();
  17.    
  18. private slots:
  19.     bool on_action_Save_As_triggered();
  20.  
  21.     bool on_action_Save_triggered();
  22.  
  23.     void on_action_Open_triggered();
  24.  
  25. private:
  26.     Ui::TextEditor *ui;
  27.     bool saveFile(); // Funcion para SaveFile con Alt+Enter se agrega definicion en texteditor.cpp
  28.     QString currentFile; // Variable global
  29.     bool maybeSave();
  30. };
  31.  
  32. #endif // TEXTEDITOR_H
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 05 de Mayo de 2013, 13:49:01
Vídeo 04.04 Incorpora las funciones Nuevo Archivo, Salir, Copiar, Pegar, Cortar en el proyecto de "EDITOR de TEXTO"

04.04 New File - Exit TextEditor - Qt C++


Código fuente hasta el vídeo 04.04:

texteditor.cpp
Código: C++
  1. #include "texteditor.h"
  2. #include "ui_texteditor.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QDebug>
  6.  
  7. TextEditor::TextEditor(QWidget *parent) :
  8.     QMainWindow(parent),
  9.     ui(new Ui::TextEditor)
  10. {
  11.     ui->setupUi(this);
  12. }
  13.  
  14. //TextEditor::~TextEditor()
  15. //{
  16. //    delete ui;
  17. //}
  18.  
  19. bool TextEditor::on_action_Save_As_triggered()
  20. {
  21.     QString fileName = QFileDialog::getSaveFileName(
  22.         this,
  23.         "Text Editor - Save As",
  24.         "/Users/Jaime/Documents/QT/Text Editor",
  25.         "Text Files (*.txt);;All Files (*.*)"
  26.     );
  27.  
  28.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  29.         currentFile = fileName;
  30.         return saveFile();
  31.     }
  32.     return false;
  33. }
  34.  
  35. bool TextEditor::saveFile()
  36. {
  37.     QFile file( currentFile );
  38.     if( file.open ( QFile::WriteOnly ) ){ //  Si se puede abrir el archivo en modo escritura
  39.         file.write( ui->plainTextEdit->toPlainText().toUtf8() );
  40.         return true;
  41.     }else{
  42.         QMessageBox::warning(
  43.             this,
  44.             "Text Editor",
  45.             tr( "Cannot write file %1.\nError: %2" )
  46.             .arg( currentFile )
  47.             .arg( file.errorString() )
  48.         );
  49.         return false;
  50.     }
  51.  
  52. }
  53.  
  54.  
  55. bool TextEditor::on_action_Save_triggered()
  56. {
  57.     if( currentFile.isEmpty() ) // Si esta vacio
  58.         return on_action_Save_As_triggered();
  59.     else
  60.         return saveFile();
  61. }
  62.  
  63. bool TextEditor::maybeSave(){
  64.     if( ui->plainTextEdit->document()->isModified() ){
  65.         QMessageBox::StandardButton ret =
  66.             QMessageBox::warning(
  67.                 this,
  68.                 "Text Editor",
  69.                 tr( "The Document has been Modified\n"
  70.                     "Do you want to save your changes?"
  71.                  ),
  72.                 QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel
  73.             );
  74.         if( ret == QMessageBox::Yes ){
  75.            return on_action_Save_triggered();
  76.         }else if( ret == QMessageBox::Cancel )
  77.            return false;
  78.     }
  79.     return true;
  80. }
  81.  
  82. // Filtros "Text Files (*.txt);;All Files (*.*)"
  83. void TextEditor::on_action_Open_triggered()
  84. {
  85.     if( maybeSave() ){
  86.         QString fileName = QFileDialog::getOpenFileName(
  87.             this,
  88.             "Text Editor - Open File"
  89.             "/Users/Jaime/Documents/QT/Text Editor",
  90.             "Text Files (*.txt);;All Files (*.*)"
  91.  
  92.          );
  93.         if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  94.             QFile file( fileName );
  95.             if ( file.open( QFile::ReadOnly )){ // Se puede leer en modo de lectura
  96.                 ui->plainTextEdit->setPlainText( file.readAll() ); //
  97.                 currentFile = fileName;
  98.             }else{
  99.                 QMessageBox::warning(
  100.                     this,
  101.                     "Text Editor",
  102.                     tr( "Cannot read File %1.\nError: %2" )
  103.                     .arg( fileName )
  104.                     .arg( file.errorString() )
  105.                 );
  106.             }
  107.         }
  108.    }
  109. }
  110.  
  111. void TextEditor::on_action_New_triggered()
  112. {
  113.     if( maybeSave() ){
  114.         ui->plainTextEdit->clean();
  115.     }
  116. }
  117.  
  118.  
  119. void TextEditor::closeEvent( QCloseEvent *event ){
  120.     if( maybeSave() ){
  121.         event->accept();
  122.     }else
  123.         event->ignore();
  124. }

texteditor.h
Código: C++
  1. #ifndef TEXTEDITOR_H
  2. #define TEXTEDITOR_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class TextEditor;
  8. }
  9.  
  10. class TextEditor : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.    
  14. public:
  15.     explicit TextEditor(QWidget *parent = 0);
  16.     //~TextEditor();
  17.    
  18. private slots:
  19.     bool on_action_Save_As_triggered();
  20.  
  21.     bool on_action_Save_triggered();
  22.  
  23.     void on_action_Open_triggered();
  24.  
  25.     void on_action_New_triggered();
  26.  
  27.     void closeEvent( QCloseEvent *event );
  28.  
  29. private:
  30.     Ui::TextEditor *ui;
  31.     bool saveFile(); // Funcion para SaveFile con Alt+Enter se agrega definicion en texteditor.cpp
  32.     QString currentFile; // Variable global
  33.     bool maybeSave();
  34. };
  35.  
  36. #endif // TEXTEDITOR_H

Nota: Las acciones Salir, Copiar, Pegar, Cortar se ven reflejadas osea codificadas en el archivo "texteditor.ui" y no en texteditor.cpp o texteditor.h
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 05 de Mayo de 2013, 21:35:46
Vídeo 04.05 Indentificador de modificación de archivo actual, simbolo (*) después del FileName:

04.05 Placeholder [ * ] - TextEditor - Qt C++

Nota: En la version 5.0.2 en Configure Connection aparece como plainTextEdit y según el vídeo se muestra como TextEdit, entonces tuve que editar o cambiar en receiver de plainTextEdit a TextEdit, me escriben si a ustedes les pasa lo mismo

Código fuente hasta el vídeo 04.05:

texteditor.cpp
Código: C++
  1. #include "texteditor.h"
  2. #include "ui_texteditor.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QFileInfo> // Video 04.05
  6. #include <QDebug>
  7.  
  8. TextEditor::TextEditor(QWidget *parent) :
  9.     QMainWindow(parent),
  10.     ui(new Ui::TextEditor)
  11. {
  12.     ui->setupUi(this);
  13. }
  14.  
  15. //TextEditor::~TextEditor()
  16. //{
  17. //    delete ui;
  18. //}
  19.  
  20. bool TextEditor::on_action_Save_As_triggered()
  21. {
  22.     QString fileName = QFileDialog::getSaveFileName(
  23.         this,
  24.         "Text Editor - Save As",
  25.         "/Users/Jaime/Documents/QT/Text Editor",
  26.         "Text Files (*.txt);;All Files (*.*)"
  27.     );
  28.  
  29.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  30.         currentFile = fileName;
  31.         return saveFile();
  32.     }
  33.     return false;
  34. }
  35.  
  36. bool TextEditor::saveFile()
  37. {
  38.     QFile file( currentFile );
  39.     if( file.open ( QFile::WriteOnly ) ){ //  Si se puede abrir el archivo en modo escritura
  40.         file.write( ui->plainTextEdit->toPlainText().toUtf8() );
  41.         setWindowTitle( tr( "Text Editor - %1[*]" ) // Video 04.05
  42.                         .arg( QFileInfo( currentFile ).fileName() ) );
  43.         ui->plainTextEdit->document()->setModified(false); // Video 04.05
  44.         return true;
  45.     }else{
  46.         QMessageBox::warning(
  47.             this,
  48.             "Text Editor",
  49.             tr( "Cannot write file %1.\nError: %2" )
  50.             .arg( currentFile )
  51.             .arg( file.errorString() )
  52.         );
  53.         return false;
  54.     }
  55.  
  56. }
  57.  
  58. bool TextEditor::on_action_Save_triggered()
  59. {
  60.     if( currentFile.isEmpty() ) // Si esta vacio
  61.         return on_action_Save_As_triggered();
  62.     else
  63.         return saveFile();
  64. }
  65.  
  66. bool TextEditor::maybeSave(){
  67.     if( ui->plainTextEdit->document()->isModified() ){
  68.         QMessageBox::StandardButton ret =
  69.             QMessageBox::warning(
  70.                 this,
  71.                 "Text Editor",
  72.                 tr( "The Document has been Modified\n"
  73.                     "Do you want to save your changes?"
  74.                  ),
  75.                 QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel
  76.             );
  77.         if( ret == QMessageBox::Yes ){
  78.            return on_action_Save_triggered();
  79.         }else if( ret == QMessageBox::Cancel )
  80.            return false;
  81.     }
  82.     return true;
  83. }
  84.  
  85. // Filtros "Text Files (*.txt);;All Files (*.*)"
  86. void TextEditor::on_action_Open_triggered()
  87. {
  88.     if( maybeSave() ){
  89.         QString fileName = QFileDialog::getOpenFileName(
  90.             this,
  91.             "Text Editor - Open File",
  92.             "/Users/Jaime/Documents/QT/Text Editor",
  93.             "Text Files (*.txt);;All Files (*.*)"
  94.  
  95.          );
  96.         if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  97.             QFile file( fileName );
  98.             if ( file.open( QFile::ReadOnly )){ // Se puede leer en modo de lectura
  99.                 ui->plainTextEdit->setPlainText( file.readAll() ); //
  100.                 setWindowTitle( tr( "Text Editor - %1[*]" ) // Video 04.05
  101.                                 .arg( QFileInfo( currentFile ).fileName() ) );
  102.                 currentFile = fileName;
  103.             }else{
  104.                 QMessageBox::warning(
  105.                     this,
  106.                     "Text Editor",
  107.                     tr( "Cannot read File %1.\nError: %2" )
  108.                     .arg( fileName )
  109.                     .arg( file.errorString() )
  110.                 );
  111.             }
  112.         }
  113.    }
  114. }
  115.  
  116. void TextEditor::on_action_New_triggered()
  117. {
  118.     if( maybeSave() ){
  119.         ui->plainTextEdit->clear();
  120.     }
  121. }
  122.  
  123.  
  124. void TextEditor::closeEvent( QCloseEvent *event ){
  125.     if( maybeSave() ){
  126.         event->accept();
  127.     }else
  128.         event->ignore();
  129. }
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 06 de Mayo de 2013, 00:48:43
Hola CompSystems, me parece que no hay nada mal pero por si las dudas abajo del mensaje adjunto el codigo fuente del editor de texto.

PD: Gracias por poner los videos que no habia actualizado en el foro.
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 06 de Mayo de 2013, 10:09:14
Bigluis Ahora comparo el código que digite con el tuyo. para ver donde esta el problema al ejecutar OPEN  :) , aunque puede ser problema de la ultima version de QT, pues en el video 04.05 encontré una inconsistencia con lo que muestras en el vídeo y que la comento 2 post arriba.

Es posible cambiar el símbolo de * (Archivo modificado) por otra cadena de texto?

Video 04.06 Barra de herramientas con las funciones | New, Open, Save, Save As | Copy, Cut, Paste | ...

Video 04.06 Actions Toolbar- TextEditor - Qt C++

Bigluis por favor podrías guiarme como cambiar el icono al titulo y como agregar un botón en la barra de herramientas que llame a una función de usuario definida en texteditor.cpp

Gracias

Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 06 de Mayo de 2013, 14:51:50
video 04.07 Configuración para guardar la posición y tamaño de la ventana al reiniciar la aplicación


 04.07 QSettings - TextEditor - Qt C++


texteditor.h
Código: C++
  1. #ifndef TEXTEDITOR_H
  2. #define TEXTEDITOR_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class TextEditor;
  8. }
  9.  
  10. class TextEditor : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.    
  14. public:
  15.     explicit TextEditor(QWidget *parent = 0);
  16.     //~TextEditor();
  17.    
  18. private slots:
  19.     bool on_action_Save_As_triggered();
  20.  
  21.     bool on_action_Save_triggered();
  22.  
  23.     void on_action_Open_triggered();
  24.  
  25.     void on_action_New_triggered();
  26.  
  27.     void closeEvent( QCloseEvent *event );
  28.  
  29. private:
  30.     Ui::TextEditor *ui;
  31.     bool saveFile(); // Funcion para SaveFile con Alt+Enter se agrega definicion en texteditor.cpp
  32.     QString currentFile; // Variable global
  33.     bool maybeSave();
  34.     void readSettings();
  35.     void writeSettings();
  36. };
  37.  
  38. #endif // TEXTEDITOR_H

texteditor.cpp
Código: C++
  1. #include "texteditor.h"
  2. #include "ui_texteditor.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QFileInfo> // Video 04.05
  6. #include <QDebug>
  7. #include <QSettings> // Video 04.07
  8.  
  9. TextEditor::TextEditor(QWidget *parent) :
  10.     QMainWindow(parent),
  11.     ui(new Ui::TextEditor)
  12. {
  13.     ui->setupUi(this);
  14.     readSettings(); // Video 04.07
  15. }
  16.  
  17. //TextEditor::~TextEditor()
  18. //{
  19. //    delete ui;
  20. //}
  21.  
  22. bool TextEditor::on_action_Save_As_triggered()
  23. {
  24.     QString fileName = QFileDialog::getSaveFileName(
  25.         this,
  26.         "Text Editor - Save As",
  27.         "/Users/Jaime/Documents/QT/Text Editor",
  28.         "Text Files (*.txt);;All Files (*.*)"
  29.     );
  30.  
  31.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  32.         currentFile = fileName;
  33.         return saveFile();
  34.     }
  35.     return false;
  36. }
  37.  
  38. bool TextEditor::saveFile()
  39. {
  40.     QFile file( currentFile );
  41.     if( file.open ( QFile::WriteOnly ) ){ //  Si se puede abrir el archivo en modo escritura
  42.         file.write( ui->plainTextEdit->toPlainText().toUtf8() );
  43.         setWindowTitle( tr( "Text Editor - %1[*]" ) // Video 04.05
  44.                         .arg( QFileInfo( currentFile ).fileName() ) );
  45.         ui->plainTextEdit->document()->setModified(false); // Video 04.05
  46.         return true;
  47.     }else{
  48.         QMessageBox::warning(
  49.             this,
  50.             "Text Editor",
  51.             tr( "Cannot write file %1.\nError: %2" )
  52.             .arg( currentFile )
  53.             .arg( file.errorString() )
  54.         );
  55.         return false;
  56.     }
  57.  
  58. }
  59.  
  60. bool TextEditor::on_action_Save_triggered()
  61. {
  62.     if( currentFile.isEmpty() ) // Si esta vacio
  63.         return on_action_Save_As_triggered();
  64.     else
  65.         return saveFile();
  66. }
  67.  
  68. bool TextEditor::maybeSave(){
  69.     if( ui->plainTextEdit->document()->isModified() ){
  70.         QMessageBox::StandardButton ret =
  71.             QMessageBox::warning(
  72.                 this,
  73.                 "Text Editor",
  74.                 tr( "The Document has been Modified\n"
  75.                     "Do you want to save your changes?"
  76.                  ),
  77.                 QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel
  78.             );
  79.         if( ret == QMessageBox::Yes ){
  80.            return on_action_Save_triggered();
  81.         }else if( ret == QMessageBox::Cancel )
  82.            return false;
  83.     }
  84.     return true;
  85. }
  86.  
  87. void TextEditor::readSettings() // Video 04.07
  88. {
  89.     QSettings settings( "About", "TextEditor" );
  90.     QPoint pos = settings.value( "pos", QPoint( 200, 200 ) ).toPoint();
  91.     QSize size = settings.value( "size", QSize( 400, 400 ) ).toSize();
  92.     resize( size );
  93.     move( pos );
  94. }
  95.  
  96. void TextEditor::writeSettings() // Video 04.07
  97. {
  98.     QSettings settings( "About", "TextEditor" );
  99.     settings.setValue( "pos", pos() );
  100.     settings.setValue( "size", size() );
  101. }
  102.  
  103.  
  104.  
  105. // Filtros "Text Files (*.txt);;All Files (*.*)"
  106. void TextEditor::on_action_Open_triggered()
  107. {
  108.     if( maybeSave() ){
  109.         QString fileName = QFileDialog::getOpenFileName(
  110.             this,
  111.             "Text Editor - Open File",
  112.             "/Users/Jaime/Documents/QT/Text Editor",
  113.             "Text Files (*.txt);;All Files (*.*)"
  114.  
  115.          );
  116.         if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  117.             QFile file( fileName );
  118.             if ( file.open( QFile::ReadOnly )){ // Se puede leer en modo de lectura
  119.                 ui->plainTextEdit->setPlainText( file.readAll() ); //
  120.                 setWindowTitle( tr( "Text Editor - %1[*]" ) // Video 04.05
  121.                                 .arg( QFileInfo( currentFile ).fileName() ) );
  122.                 currentFile = fileName;
  123.             }else{
  124.                 QMessageBox::warning(
  125.                     this,
  126.                     "Text Editor",
  127.                     tr( "Cannot read File %1.\nError: %2" )
  128.                     .arg( fileName )
  129.                     .arg( file.errorString() )
  130.                 );
  131.             }
  132.         }
  133.    }
  134. }
  135.  
  136. void TextEditor::on_action_New_triggered()
  137. {
  138.     if( maybeSave() ){
  139.         ui->plainTextEdit->clear();
  140.     }
  141. }
  142.  
  143.  
  144. void TextEditor::closeEvent( QCloseEvent *event ){
  145.     if( maybeSave() ){
  146.         writeSettings(); // Video 04.07
  147.         event->accept();
  148.     }else
  149.         event->ignore();
  150. }

La configuración (posición y tamaño) en que archivo del PC queda registrada, para que sea leída al iniciar la aplicación?
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 06 de Mayo de 2013, 17:25:46
video 04.08 Adherir Archivos recientes en el menú File


texteditor.cpp
Código: C++
  1. #include "texteditor.h"
  2. #include "ui_texteditor.h"
  3. #include <QMessageBox>
  4. #include <QFileDialog>
  5. #include <QFileInfo> // Video 04.05
  6. #include <QDebug>
  7. #include <QSettings> // Video 04.07
  8.  
  9.  
  10.  
  11.  
  12. TextEditor::TextEditor(QWidget *parent) :
  13.     QMainWindow(parent),
  14.     ui(new Ui::TextEditor)
  15. {
  16.     ui->setupUi(this);
  17.     readSettings(); // Video 04.07
  18.  
  19.     for( int i = 0; i < MaxRecentFiles; i++ ){
  20.         recentFilesActs[ i ] = new QAction( this );
  21.         recentFilesActs[ i ]->setVisible( false );
  22.         connect( recentFilesActs[ i ],SIGNAL( triggered() ), this, SLOT( openRecentFile() ));
  23.         ui->Menu_Open_Recent_Files->addAction( recentFilesActs[ i ] );
  24.  
  25.     }
  26.     updateRecentFileActions();
  27. }
  28.  
  29. //TextEditor::~TextEditor()
  30. //{
  31. //    delete ui;
  32. //}
  33.  
  34. bool TextEditor::on_action_Save_As_triggered()
  35. {
  36.     QString fileName = QFileDialog::getSaveFileName(
  37.         this,
  38.         "Text Editor - Save As",
  39.         "/Users/Jaime/Documents/QT/Text Editor/",
  40.         "Text Files (*.txt);;All Files (*.*)"
  41.     );
  42.  
  43.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  44.         currentFile = fileName;
  45.         return saveFile( fileName );
  46.     }
  47.     return false;
  48. }
  49.  
  50. bool TextEditor::saveFile( const QString &fileName )
  51. {
  52.     QFile file( fileName  );
  53.     if( file.open ( QFile::WriteOnly ) ){ //  Si se puede abrir el archivo en modo escritura
  54.         file.write( ui->plainTextEdit->toPlainText().toUtf8() );
  55.         setCurrentFile( fileName );
  56.         setWindowTitle( tr( "Text Editor - %1[*]" ) // Video 04.05
  57.                         .arg( QFileInfo( currentFile ).fileName() ) );
  58.         ui->plainTextEdit->document()->setModified(false); // Video 04.05
  59.         return true;
  60.     }else{
  61.         QMessageBox::warning(
  62.             this,
  63.             "Text Editor",
  64.             tr( "Cannot write file %1.\nError: %2" )
  65.             .arg( currentFile )
  66.             .arg( file.errorString() )
  67.         );
  68.         return false;
  69.     }
  70.  
  71. }
  72.  
  73. bool TextEditor::maybeSave(){
  74.     if( ui->plainTextEdit->document()->isModified() ){
  75.         QMessageBox::StandardButton ret =
  76.             QMessageBox::warning(
  77.                 this,
  78.                 "Text Editor",
  79.                 tr( "The Document has been Modified\n"
  80.                     "Do you want to save your changes?"
  81.                  ),
  82.                 QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel
  83.             );
  84.         if( ret == QMessageBox::Yes ){
  85.            return on_action_Save_triggered();
  86.         }else if( ret == QMessageBox::Cancel )
  87.            return false;
  88.     }
  89.     return true;
  90. }
  91.  
  92. void TextEditor::readSettings() // Video 04.07
  93. {
  94.     QSettings settings( "About", "TextEditor" );
  95.     QPoint pos = settings.value( "pos", QPoint( 200, 200 ) ).toPoint();
  96.     QSize size = settings.value( "size", QSize( 400, 400 ) ).toSize();
  97.     resize( size );
  98.     move( pos );
  99. }
  100.  
  101. void TextEditor::writeSettings() // Video 04.07
  102. {
  103.     QSettings settings( "About", "TextEditor" );
  104.     settings.setValue( "pos", pos() );
  105.     settings.setValue( "size", size() );
  106. }
  107.  
  108. void TextEditor::setCurrentFile(const QString &fileName)
  109. {
  110.     currentFile = fileName;
  111.     setWindowTitle( tr( "Text Editor - %1[*]" ) // Video 04.05
  112.                     .arg( QFileInfo( currentFile ).fileName() ) );
  113.     QSettings settings;
  114.     QStringList recentFilesList = settings.value( "recentFilesList" ).toStringList();
  115.     recentFilesList.removeAll( fileName );
  116.     recentFilesList.prepend( fileName );
  117.     while ( recentFilesList.size() > MaxRecentFiles )
  118.         recentFilesList.removeLast();
  119.     settings.setValue( "recentFilesList", recentFilesList );
  120.     updateRecentFileActions();
  121. }
  122.  
  123. bool TextEditor::on_action_Save_triggered()
  124. {
  125.     if( currentFile.isEmpty() ) // Si esta vacio
  126.         return on_action_Save_As_triggered();
  127.     else
  128.         return saveFile( currentFile );
  129. }
  130.  
  131. void TextEditor::on_action_Open_triggered()
  132. {
  133.     if( maybeSave() ){
  134.         QString fileName = QFileDialog::getOpenFileName(
  135.             this,
  136.             "Text Editor - Open File",
  137.             "/Users/Jaime/Documents/QT/Text Editor/",
  138.             "Text Files (*.txt);;All Files (*.*)"
  139.  
  140.          );
  141.      loadFile( fileName );
  142.    }
  143. }
  144.  
  145. void TextEditor::on_action_New_triggered()
  146. {
  147.     if( maybeSave() ){
  148.         ui->plainTextEdit->clear();
  149.     }
  150. }
  151.  
  152. void TextEditor::closeEvent( QCloseEvent *event ){
  153.     if( maybeSave() ){
  154.         writeSettings(); // Video 04.07
  155.         event->accept();
  156.     }else
  157.         event->ignore();
  158. }
  159.  
  160. void TextEditor::openRecentFile()
  161. {
  162.     QAction *action = qobject_cast< QAction *>( sender() );
  163.     if( action ){
  164.         loadFile( action->data().toString() );
  165.     }
  166.  
  167. }
  168.  
  169. void TextEditor::updateRecentFileActions()
  170. {
  171.     QSettings settings;
  172.     QStringList recentFilesList = settings.value( "recentFilesList" ).toStringList();
  173.  
  174.     int numRecentFiles = qMin( recentFilesList.size(), int( MaxRecentFiles ) );
  175.     for( int i = 0; i < numRecentFiles; ++i ){
  176.         QString text = tr( "&%1 %2" )
  177.                 .arg( i+1 )
  178.                 .arg( QFileInfo( recentFilesList[ i ] ).fileName() );
  179.                 recentFilesActs[ i ]->setText( text );
  180.                 recentFilesActs[ i ]->setData( recentFilesList[ i ] );
  181.                 recentFilesActs[ i ]->setVisible( true );
  182.  
  183.     }
  184.     for( int j = numRecentFiles; j > MaxRecentFiles; j++){
  185.         recentFilesActs[ j ]->setVisible( false );
  186.     }
  187.  
  188. }
  189.  
  190. void TextEditor::loadFile(const QString &fileName)
  191. {
  192.     if ( !fileName.isEmpty() ){ // Si no esta vacio el campo del texto
  193.         QFile file( fileName );
  194.         if ( file.open( QFile::ReadOnly )){ // Se puede leer en modo de lectura
  195.             ui->plainTextEdit->setPlainText( file.readAll() ); //
  196.             setCurrentFile( fileName );
  197.         }else{
  198.             QMessageBox::warning(
  199.                 this,
  200.                 "Text Editor",
  201.                 tr( "Cannot read File %1.\nError: %2" )
  202.                 .arg( fileName )
  203.                 .arg( file.errorString() )
  204.             );
  205.         }
  206.     }
  207. }

texteditor.h
Código: C++
  1. #ifndef TEXTEDITOR_H
  2. #define TEXTEDITOR_H
  3.  
  4. #include <QMainWindow>
  5.  
  6. namespace Ui {
  7. class TextEditor;
  8. }
  9.  
  10. class TextEditor : public QMainWindow
  11. {
  12.     Q_OBJECT
  13.    
  14. public:
  15.     explicit TextEditor(QWidget *parent = 0);
  16.     //~TextEditor();
  17.    
  18. private slots:
  19.     bool on_action_Save_As_triggered();
  20.  
  21.     bool on_action_Save_triggered();
  22.  
  23.     void on_action_Open_triggered();
  24.  
  25.     void on_action_New_triggered();
  26.  
  27.     void closeEvent( QCloseEvent *event );
  28.  
  29.     void openRecentFile();
  30.  
  31. private:
  32.     Ui::TextEditor *ui;
  33.     bool saveFile( const QString &fileName ); // Funcion para SaveFile con Alt+Enter se agrega definicion en texteditor.cpp
  34.     bool maybeSave();
  35.     void readSettings();
  36.     void writeSettings();
  37.  
  38.     void setCurrentFile( const QString &fileName );
  39.     void updateRecentFileActions();
  40.     void loadFile( const QString &fileName );
  41.     QString currentFile; // Variable global
  42.  
  43.     enum { MaxRecentFiles = 9 };
  44.     QAction *recentFilesActs[ MaxRecentFiles ];
  45.  
  46.  
  47. };
  48.  
  49. #endif // TEXTEDITOR_H
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 07 de Mayo de 2013, 17:14:13
Comparando el codigo que yo digite con el de Bigluis,

texteditor.cpp (Bigluis) anexa las siguientes libs, que hace que en mi version de QT 5.0.2 no compile satisfactoriamente  :(
#include <QList>
#include <QtCore>
#include <Qsci/qsciscintilla.h>

La ruta por defecto para guardar los archivos en mi caso es:

"/Users/Jaime/Documents/QT/Text Editor/"

En el de Bigluis
"/home/luis/Documents",

Como se hace para que el programa lea la carpeta MIS DOCUMENTOS (independiente del OS), pero sin escribir el nombre del usuario, por que cuando se ejecuta en otra maquina esta apuntara a otro lugar?


otras diferencias:
En mi caso
file.write( ui->plainTextEdit->toPlainText().toUtf8() );

BigLuis
file.write(ui->plainTextEdit->toPlainText().toLatin1());

Tengo problemas al abrir un archivo, no permite seleccionarlo, no se despliega el menú archivos recientes

Mi codigo fuente:
TextEditor with QT Project  (http://www.jaimeza.org/ComputerEngineering/QT/Proyecto_TextEditor_QT.rar)
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 07 de Mayo de 2013, 18:44:03

Tengo un problema al abrir un archivo, en el campo de filtros de archivos aparece los siguiente cadena "xt);;All Files (*.*)",  que estoy codificando mal en on_action_Open_triggered()?

Hola CompSystem, el problema es que te hizo falta una coma en la segunda opcion del openFileName

tu codigo esta asi

Código: C
  1. if( maybeSave() ){
  2.         QString fileName = QFileDialog::getOpenFileName(
  3.             this,
  4.             "Text Editor - Open File"
  5.             "/Users/luis/Documents/QT/Text Editor/",
  6.             "Text Files (*.txt);;All Files (*.*)"
  7.  
  8.          );

y deberia estar asi

Código: C
  1. if( maybeSave() ){
  2.         QString fileName = QFileDialog::getOpenFileName(
  3.             this,
  4.             "Text Editor - Open File",
  5.             "/Users/luis/Documents/QT/Text Editor/",
  6.             "Text Files (*.txt);;All Files (*.*)"
  7.  
  8.          );

Fijate bien en la linea 4 de los 2 codigos anteriores.

en el codigo es la linea 136
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 07 de Mayo de 2013, 18:52:10
Por cierto, olvide mencionar que el codigo anterior contiene errores porque estuve jugnado con un componente que se llama QScintilla que es basicamente un editor de codigo. Este es el que utilizan la mayoria de editores de codigo libre

http://www.scintilla.org/ (http://www.scintilla.org/)


http://www.riverbankcomputing.com/software/qscintilla/intro (http://www.riverbankcomputing.com/software/qscintilla/intro)

http://en.wikipedia.org/wiki/Scintilla_%28editing_component%29 (http://en.wikipedia.org/wiki/Scintilla_%28editing_component%29)

 :oops: :oops: :oops:

A continuacion envio el codigo sin errores
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 07 de Mayo de 2013, 19:06:40

Como se hace para que el programa lea la carpeta MIS DOCUMENTOS (independiente del OS), pero sin escribir el nombre del usuario, por que cuando se ejecuta en otra maquina esta apuntara a otro lugar?


Con Qt eso no es posible, ya que cada SO tiene la carpeta Documentos o Mis documentos en distintas localidades del sistema. Ademas estan bajo el nombre de cada usuario. Lo que si se puede hacer es que se habra el directorio "home" por defecto. Y la otra opcion es guardar la ultima carpeta abierta en los settings.


otras diferencias:
En mi caso
file.write( ui->plainTextEdit->toPlainText().toUtf8() );

BigLuis
file.write(ui->plainTextEdit->toPlainText().toLatin1());


toUtf8 convierte de texto a un array de bytes al igual que toLatin1. La diferencia basica es que toLatin1 permite guardar una mayor cantidad de caracteres como acentos y la ñ, cosa que no es posible con toUtf8.


Tengo problemas al abrir un archivo, no permite seleccionarlo, no se despliega el menú archivos recientes

Mi codigo fuente:
jaimeza.org/ComputerEngineering/QT/Proyecto_TextEditor_QT.rar


Al correr tu programa puedo ver el menu de archivos recientes y abrirlos sin ningun problema.


Es posible cambiar el símbolo de * (Archivo modificado) por otra cadena de texto?

Dudo mucho que eso sea posible haciendolo directamente. Pero talvez lo puedas hacer si editas el evento windows change que no se su nombre exacto.


Bigluis por favor podrías guiarme como cambiar el icono al titulo y como agregar un botón en la barra de herramientas que llame a una función de usuario definida en texteditor.cpp

Gracias
Abre el archivo ui dentro de Qt y luego selecciona texteditor, ve a las propiedades y busca windowsIcon.

Los botones de la barra de herramienta por lo general se crean con Acciones o QActions. Es decir, deberas crear primero una accion y luego agregarla a la barra de herramientas que desees.

Por otro lado los QSettings o simplemente Settings son guardados de distinta manera en cada sistema operativo.

Windows -- los guarda en el Registry file
Linux -- crea un archivo INI para cada aplicacion y guarda los settings ahi
Mac OS -- crea un archivo xml y guarda los settings ahi.
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 08 de Mayo de 2013, 10:55:32
Con QScintilla se podría realizar un editor de código fuente (resaltado de palabras claves, colapso y expansión de bloques, etc)  :-/
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 08 de Mayo de 2013, 19:43:10
He programado microcontroladores  en C/C++ y casi nunca utilice por ejemplo estructuras mucho menos clases solo lo básico, ahora quiero dar un paso mas y programar aplicaciones para PC, y he decidido iniciar con QT, les pregunto si han seguido los ejemplos anteriores; Que tan diferente es QT a Visual Basic o Visual C++, Java, labview y matlab con interfaces gráficas?

Gracias

PD: Quisiera ver el mismo ejemplo TextEditor (basico, menus file, open, save, save as, copy, paste ) programado en algunos lenguajes  anteriores para comparar el código y tener una vista mas amplia en la manera de codificarlo, quien de vosotros podéis agregar lo que pido

de nuevo Gracias
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 15 de Mayo de 2013, 15:44:50
Se subió el código fuente de QHyperTerminal   

https://sites.google.com/site/nicatronicavideos/qhyperterminal

pero me genera el siguiente error :(

C:\Users\Jaime\Documents\QT\qespta1\qespta\main.cpp:1: error: QtGui/QApplication: No such file or directory
#include <QtGui/QApplication>
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 18 de Mayo de 2013, 01:23:07
Ya pueden descargar el codigo corregido para la version 5.0

 https://sites.google.com/site/nicatronicavideos/qhyperterminal (https://sites.google.com/site/nicatronicavideos/qhyperterminal)
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 18 de Mayo de 2013, 14:25:12
Gracias ... Compilando con  Windows8-OS y QT 5.0.2

Las cosas no son tan fáciles  al :5],  compilar un codigo fuente creado en otro PC  :(

Desinstale todas las versiones "old" que tenia de QT e instale solo la ultima 5.0.2

ahora genera el siguiente error

C:\Users\Jaime\Documents\QT\QHyperterminal\qextserialport.h:138: error: QtCore/private/qwineventnotifier_p.h: No such file or directory

No se, Bigluis podrías por favor probar con la ultima version de QT 5.0.2, de pronto hay alguna incompatibilidad

Muchas Gracias


Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 18 de Mayo de 2013, 15:07:17
Olvidé mencionar que ese codigo no trabaja en windows. Solamente trabaja en Linux. Para que trabaje en windows debes utilizar las librerias ".h" de windows.
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 18 de Mayo de 2013, 15:29:28
En el archivo mainwindows.cpp realice el siguiente cambio

reemplace //#define Q_OS_UNIX
#define Q_OS_WIN

buscando en otros archivos si encuentro definiciones similares.

Sin éxito al compilar, me hace falta mucho por aprender QT
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 20 de Mayo de 2013, 10:03:41
Un video para complementar el Text Editor

Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 23 de Mayo de 2013, 09:05:29
Inicio Rápido con Qt

Fuente foro.udtools.net

http://foro.udtools.net/showthread.php?9162-Inicio-R%E1pido-con-Qt-4

http://foro.udtools.net/showthread.php?9078-Introduciendonos-en-QT-y-C

http://www.youtube.com/watch?feature=player_embedded&v=HeHhHEkyLhk


PD: quiero registrarme en foro.udtools.net pero me genera un problema les sucede lo mismo?
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 31 de Mayo de 2013, 19:30:01
Un nuevo sitio de QT_C++

http://www.codigoqt.com/index.php
Título: Re: Video Tutorial Programación Qt C++
Publicado por: Miquel_S en 01 de Junio de 2013, 10:32:43
Hola CompSystems a mi tampoco me deja registrarme, me esta diciendo que hay problemas con el servidor, gracias por los aportes.

Saludos!
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 04 de Junio de 2013, 22:49:49
La clave esta en la siguiente pregunta para poderse registrar

Que responderian ustedes?

Random Question: Ordena las letras iMddar y ponlo como respuesta

RTA:
Título: Re: Video Tutorial Programación Qt C++
Publicado por: BrunoF en 05 de Junio de 2013, 00:54:01
Madrid

:)
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 05 de Junio de 2013, 10:52:17
Ok, ya logre registrarme en www.udtools.net
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 11 de Junio de 2013, 16:13:48
mas videos

http://www.youtube.com/channel/UCbMKqPsUkdmiK7VeXSi2erg
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 23 de Junio de 2013, 01:39:04
Hola amigos aqui les traigo 3 videos nuevos



Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 24 de Junio de 2013, 21:48:59
Gracias por tus video-tutos  :-/ Observando el vídeo "05.01 Instalar Modulo Serial Port - Qt C++"  :-) ideal para nuestros proyectos de electrónica con PC

PD: ya esta la version "Qt version 5.1.0-rc1"

http://download.qt-project.org/development_releases/qt/5.1/5.1.0-rc1/
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 26 de Junio de 2013, 17:24:57
bigluis, observando el video "#06 Custom Widget - Qt C++" se aprecia como expandes la función spinBox "caja selectora de rotador de números"de decimal a hexadecimal, aplicando un principio similar es posible hacer que se acepte QT++, código en números binarios? como lo hace los compiladores para uControladores

variable = 0b00011000;

o solo es posible modificando el compilador?
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 30 de Junio de 2013, 15:13:48
No entiendo, a que te refieres con numeros binarios.

Te refieres a que el SpinBox unicamente acepte números binarios?

Eso si es posible, simplemente modificas el regular expresion
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 30 de Junio de 2013, 19:09:24
No, actualmente el compilador acepta números en hexadecimal

variable = 0xFF;

deseo que acepte tambien números en base 2

variable = 0b00011000;
Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 01 de Julio de 2013, 08:42:55
Puedes usar el macro BOOST_BINARY, este se encarga de preprocesar el valor digitado a un numero decimal y para imprimirlo puedes usar itoa
Código: [Seleccionar]
#include <boost/utility/binary.hpp>
#include <stdio.h>
#include <stdlib.h>
#include <bitset>
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
  unsigned short b = BOOST_BINARY( 10010 );
  char buf[sizeof(b)*8+1];
  printf("hex: %04x, dec: %u, oct: %06o, bin: %16s\n", b, b, b, itoa(b, buf, 2));
  cout << setfill('0') <<
    "hex: " << hex << setw(4) << b << ", " <<
    "dec: " << dec << b << ", " <<
    "oct: " << oct << setw(6) << b << ", " <<
    "bin: " << bitset< 16 >(b) << endl;
  return 0;
}

el código anterior produce lo siguiente:
Código: [Seleccionar]
hex: 0012, dec: 18, oct: 000022, bin:            10010
hex: 0012, dec: 18, oct: 000022, bin: 0000000000010010
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 03 de Julio de 2013, 16:10:14
Gracias bigluis

Con respecto al avance de Qt, hay mucho por leer, y apenas estoy terminando clases en C++  :(

bigluis podrías porfavor hacer una revisión de
(05.01 Instalar Modulo Serial Port - Qt C++) pero para windows-OS, me cambiare a linux-OS creo que en mi próxima reencarnación  :?

www.youtube.com/watch?feature=player_embedded&v=WebIIs_4vbQ

PD: Pagina sobre el conversor USB-Serial
http://www.trendnet.com/langsp/products/proddetail.asp?prod=150_TU-S9

(http://www.trendnet.com/image/products/photo/TU-S9_d1_1.jpg)
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 11 de Julio de 2013, 08:43:49
Nueva version Qt 5.1.0 libraries and Qt Creator 2.7.2  :-/

http://qt-project.org/downloads
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 09 de Agosto de 2013, 10:07:33
otros video tutos, al rededor de 200

Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 21 de Agosto de 2013, 20:28:05
Un nuevo video sobre complementos para text editor

04.09 Find - Text Editor - Qt C++

Título: Re: Video Tutorial Programación Qt C++
Publicado por: bigluis en 05 de Noviembre de 2013, 16:36:32
bigluis podrías porfavor hacer una revisión de
(05.01 Instalar Modulo Serial Port - Qt C++) pero para windows-OS, me cambiare a linux-OS creo que en mi próxima reencarnación  :?

La version 5.2 de Qt creator trae precompilada las librerias del serial port solo necesitan habilitar esa opcion durante la instalación de Qt
Título: Re: Video Tutorial Programación Qt C++
Publicado por: CompSystems en 24 de Noviembre de 2013, 23:27:38
Es increíble que QT se  pueda instalar en una raspberry-pi

http://www.todopic.com.ar/foros/index.php?topic=41770.msg347452;topicseen#msg347452
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 16 de Julio de 2017, 03:20:42
.

No había visto estos tutoriales de bigluis sobre QT, muy buenos, esta noche me he visto unos cuantos del tirón, y seguiré viendo el resto, porque son muy interesantes. Lo de las señales y los slots, no lo conocía, y me ha parecido genial.

Tengo que encarar unos cuantos proyectos en C++ para PC, y estaba mirando por cual herramienta decantarme. Además veo que algunas han evolucionado bastante, como Code::Blocks, con entornos gráficos. Conozco VC++, pero el problema es que te limita a programar para Windows, mientras que QT es multiplataforma (Windows, Linux, Android, Raspberry...).

Los tutoriales de bigluis, casi que ya me han hecho decidirme por seguir con QT Creator, aunque veo que Code::Blocks pisa fuerte con su WxWidget para interfaces gráficos.

Dev-C, creo que se ha quedado algo atrás, y otros IDEs como Geany, me parece que tampoco han evolucionado hacía entornos gráficos.

Lo que me tiene un poco mosca, es la evolución de QT en cuanto a su historia como producto libre/comercial. Parece que de ser un producto totalmente gratuito, tras ser adquirido por una empresa, se ha convertido en un producto gratuito con limitaciones, o de pago (muy caro) para usos comerciales.

Por lo que he leído, si se usa la versión gratuita, los programas creados, se tienen que distribuir entregando el fuente, y si lo quieres usar para desarrollos comerciales, cuesta un pastón la licencia (más de 200 €/$ mes).

¿ Alguien conoce cual es exactamente la situación del producto ?, no me gustaría tener problemas legales, por usar el producto para desarrollos comerciales, o que me cueste un pastizal al mes. Como alternativa, tendría Code::Blocks para tener multiplataforma con interface gráfica, aunque no he visto que se use para Raspberry. Y finalmente seguir con VC++, pero relegado a desarrollos para Windows.


Edito: algo se cuenta en el FAQ de QT.
https://www.qt.io/faq/#_Toc_1
Título: Re:Video Tutorial Programación Qt C++
Publicado por: KILLERJC en 16 de Julio de 2017, 10:57:32
Señales y Slot creo que es lo principal de Qt, yo por un momento segui estos videotutoriales en ingles

Código: [Seleccionar]
https://www.youtube.com/watch?v=Ex0ieUQMQmg&list=PL2D1942A4688E9D63&index=41
Título: Re:Video Tutorial Programación Qt C++
Publicado por: tsk en 16 de Julio de 2017, 11:11:35
La mayoría de las bibliotecas de QT estan baja LGPL, lo cual te permite linkear tu aplicación comercial con ellas sin problemas, si modificas alguna parte de las QT debes de hacer pública esa modificación a tus usuarios. Si no sólo debes hacer hincapié que estas usando QT en tu aplicación e informar al usuario donde puede descargar las fuentes de QT, no de tu aplicación. En el siguiente enlace menciona que hay algunas que están en GPL, por lo que si las usas tendrías que liberar el código fuente de tu aplicación-

https://www.qt.io/faq/#_Toc_3_7

Aparte de las QT estan las GTK+ que son multiplataforma, aunque no es posible usarlas en android.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 16 de Julio de 2017, 12:02:36
.

Ah, pues entonces me vale, yo entendí que si hacías desarrollos comerciales con la versión gratuita de QT, tenías que liberar tu código fuente.

Lo que no entiendo, entonces, es de que sirve la licencia comercial de QT, que cuesta 295 $/mes.

Otra duda que tengo es sobre los compiladores a usar para Windows con QT Creator. MinGW, Cygwin, MSVC++. De MinGW parece que solo hay versión de 32 bits en la página oficial, y la descarga de QT con Mingw, es de 32 bits, pero buscando por Google, me sale una versión de 64 bits. No se si hay alguna forma de usar MinGW 64 bit con QT.

Cygwin, no recuerdo si era de 32 ó 64 bits. Y lo de usar el compilador de VC++, desde QT, no entiendo si es de pago o gratuito, yo tengo intalado Vistual Studio 2015 y me lo pilla, pero veo que hay posibilidad de descargar el compilador, creo que sin coste (o eso me ha parecido).

Ahora mismo, tengo instalados los kits del compilador MinGW 5.3.0 32 bit y MSVC++ 14.0 64 bit, y con los dos me compila perfecto. Lo único que para MSVC++ me dice que no tengo Debug configurado.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 16 de Julio de 2017, 12:20:15
Señales y Slot creo que es lo principal de Qt, yo por un momento segui estos videotutoriales en ingles

Código: [Seleccionar]
https://www.youtube.com/watch?v=Ex0ieUQMQmg&list=PL2D1942A4688E9D63&index=41


Se ven bien, pero si los hay en español, como los de bigluis, los prefiero por comodidad. También he conseguido un par de libros en PDF, bastante actualizados.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: tsk en 16 de Julio de 2017, 12:24:22
No necesariamente tienes que liberar tu código, porque está bajo LGPL (con algunas excepciones en GPL de las cuales tendrías que cuidar en no usar esos componentes).

Pero lo que si tienes que diferenciar es entre enlazado estático y dinámico.

Si lo enlazas de forma estática, tienes que liberar el código, si los enlazas de forma dinámica, no tienes problemas.

La idea detrás de la versión Comercial es que tu puedas modificar las fuentes de QT y no liberar el código de esas modificaciones.

https://www.qt.io/licensing-comparison/

Citar
Possible to keep your application private with dynamic linking: LGPL Si GPL No Comercial Si

Con respecto a VC++ no tengo idea de su licenciamiento, pero lo que tendrías que ver es lo relacionado a la redistribución de sus componentes.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 16 de Julio de 2017, 12:42:58
Si lo enlazas de forma estática, tienes que liberar el código, si los enlazas de forma dinámica, no tienes problemas.

Tengo que ver como se hace eso, me hago una idea de en que consiste, pero no el detalle de como hacerlo. ¿ Tiene algo que ver con crear esa librería dinámica como una DLL (o algo así), para que quede como algo externo a mi aplicación ?.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: tsk en 16 de Julio de 2017, 12:52:25
Si lo enlazas de forma estática, tienes que liberar el código, si los enlazas de forma dinámica, no tienes problemas.

Tengo que ver como se hace eso, me hago una idea de en que consiste, pero no el detalle de como hacerlo. ¿ Tiene algo que ver con crear esa librería dinámica como una DLL (o algo así), para que quede como algo externo a mi aplicación ?.

Es exactamente eso. Estático: crea un ejecutable con todo incluido, dinámico: usa las DLL en Windows o .so en Linux.

Edito para agregar un ejemplo simple de creación de librerías compartidas con g++ y diferencia con el enlazado estático

Tengo los siguientes tres archivos:

lib1.hpp
Código: C
  1. #ifndef __LIB1_HPP
  2. #define __LIB1_HPP
  3.  
  4. int suma(int a, int b);
  5.  
  6. #endif

lib1.cpp
Código: C
  1. #include "lib1.hpp"
  2. int suma(int a, int b){
  3.         return a+b;
  4. }

main.cpp
Código: C
  1. #include <iostream>
  2. #include "lib1.hpp"
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.         int a,b;
  9.         a = 10;
  10.         b = 20;
  11.         cout<<suma(a,b)<<endl;
  12.  
  13.         return 0;
  14. }

Compilación estática:

Código: [Seleccionar]
mdkir estatica
cd estatica
g++ -L../ ../main.cpp ../lib1.cpp -o static

Salida
Código: [Seleccionar]
$ ./static
30

Compilación con librerías enlazadas

Código: [Seleccionar]
mkdir dynamic
g++ -c ../lib1.cpp -fPIC
g++ -shared -o liblib1.so lib1.o
sudo cp liblib1.so /usr/lib
g++ -o dynamic ../main.cpp -llib1

Salida
Código: [Seleccionar]
$ ./dynamic
30

Código: [Seleccionar]
$ ldd dynamic | grep lib1
liblib1.so => /usr/lib/liblib1.so (0x00007fb565dab000)

En caso de que el ejecutable no encuentre la librería te arrojaría un error:

Código: [Seleccionar]
$ ./dynamic
./dynamic: error while loading shared libraries: liblib1.so: cannot open shared object file: No such file or directory

Mas información sobre QT lo puedes encontrar en su wiki

https://wiki.qt.io/How_to_create_a_library_with_Qt_and_use_it_in_an_application
http://doc.qt.io/qt-5/windows-deployment.html
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 16 de Julio de 2017, 13:57:19
 
Ok, gracias, miraré de hacerlo así, para evitar problemas legales.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: KILLERJC en 16 de Julio de 2017, 16:43:27
Estuve mirando y dice esto:

Citar
Can create closed consumer devices

Y el unico posible es con la version paga. Dejando de lado el codigo, supuestamente no podrias hacer ningun producto comercial.¿ O quiere decir que deberias dar esquemas y todo lo demas del producto ?.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: tsk en 16 de Julio de 2017, 18:32:54
Lo que dice, según ellos es:

Citar
For instance, LGPLv3 explicitly forbids the distribution of closed consumer devices
https://www.qt.io/qt-news/qt-company-releases-qt-5-7-new-qt-3d-module-user-interface-library-leveraging-modern-c11-updated-licensing-offering/

En ningún lugar de la LGPLv3 prohíbe de esa forma su uso.

https://opensource.org/licenses/lgpl-3.0.html

https://www.gnu.org/licenses/gpl-faq.en.html#LGPLStaticVsDynamic

Probablemente, según ellos sea porque tienen algunos componentes en GPLv3, y esos componentes tienen su enfoque a dispositivos móviles. Pero aquí lo que tenemos es que quiere hacer programas para Windows y Linux (incluido el Raspberry Pi).

Pero vamos, que esas líneas están puestas para que los desarrolladores las lean, no para abogados.

Además siempre hay formas de saltar esas restricciones.

Puedes tener una separación entre componentes a través de una API, por un lado los componentes GPL, que tu cliente puede instalar aparte, y los LGPL que te permiten tener tu código cerrado.

Segundo, con respecto a los esquemáticos, la GPL y LGPL sólo cubre los aspectos del software, en ningún lugar menciona los aspectos del hardware en el que los programas se ejecutan.

Edito para añadir un ejemplo:

Los productos de Linksys contienen software con LGPL, y aquí un ejemplo de una de las licencias
http://downloads.linksys.com/downloads/userguide/ea6200v1_1.1.41.162020.pdf
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 16 de Julio de 2017, 22:31:25
.

Si que lo han complicado, todo desde que en 2012 la empresa Digia adquiere los derechos de QT (según la Wiki), eso supongo que se corresponde con la liberación de la versión 5 de QT.

A mi ya me pareció muy raro el cambio de la página web de QT, antes la web tenía un aspecto mucho más cercano, típico de un proyecto open source, pero ahora tiene una pinta de página comercial que tira de espaldas.

Seguiré con QT, porque me parece la mejor opción para trabajar en C++ con varias plataformas y un entorno gráfico. La alternativa sería Code::Blocks con Wxwidgets, porque con VC++ solo puedo trabajar en Windows.

Una cosa que leí por algún sitio es que los widgets tipo "deslizantes" no estaban disponibles en QT (o al menos la gente se quejaba de eso en QT4), porque estaban patentados por Microsoft, sin embargo en la versión actual de QT Creator si que tengo deslizantes horizontales y verticales en la ventana de widgets.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: tsk en 17 de Julio de 2017, 02:15:50
En si yo no veo que una opción sea mejor que otra, ya que todo depende del tipo de proyectos que desarrollemos.

Además de que Code Blocks también esta para linux, por lo que puedes usarlo en ambos entornos y si quieres usar las wxWidgets, toman en cuenta que también lo han usado para crear juegos como el 0.A.D.

https://play0ad.com/

De que es potente es bastante potente.

Si te preocupa el usar QT para tus proyectos comerciales, prueba http://www.copperspice.com/ es un fork de las QT.

Aunque también para desarrollar GUIs en C++ cuentas con las Gtk+, a parte de las wxWidgets, y tienes Glade para generar las ventas. Esta en LGPL y no te asustan para que no lo uses en productos comerciales sin pasar por caja.

Que te parece el siguiente
http://cegui.org.uk/

A pesar de estar pensado para la creación de juegos (http://store.steampowered.com/app/496460/Life_is_Feudal_Forest_Village/) puedes desarrollar cualquier tipo de aplicación.

Saliendo de C/C++ si quieres un entorno tipo RAD como Delphi, tienes Lazarus/Freepascal.

O si quieres crear interfaces más modernas, puedes usar NodeJS+Electron. Es multiplataforma y todo lo haces con Javascript, HTML y CSS, además puedes enlazar a librerías hechas en C++.

Y, al menos ninguno de ellos te quiere hacer pasar por caja para darte el permiso de desarrollar productos comerciales.
Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 17 de Julio de 2017, 02:33:58
.

Hay tantas opciones, que al final marea. En principio pensé en usar VC++, pero como me puse con QT para desarrollos con la Raspberry, y como lo que quiero hacer ahora para Windows me interesa poderlo llevar también a Android, me decanté por QT.

Ahora ya estoy hecho un lío, entre los IDE y las librerías gráficas.

Centrando el tema, como IDE estaría Visual Studio, QT Creator y CodeBlocks, no se si hay alguno más a considerar. Y como librerías gráficas, las propias de VC++ solo para VC++, y para otros IDE las QT, Wxwidgets y Copperspice.

Como lenguaje de programación, si que tengo claro que me quedo con C++.


Sobre usar Copperspice, lo que me interesa es ver como se integra en cada IDE para manejar la interface gráfica. Aquí he encontrado algo para integrarlo en QT Creator, no se si hay algo parecido para CodeBlocks.

http://www.copperspice.com/docs/cs_overview/sample-toolchain.html

¿ O hay algún editor gráfico, específico para trabajar con Copperspice ?

Título: Re:Video Tutorial Programación Qt C++
Publicado por: planeta9999 en 17 de Julio de 2017, 08:51:23
.

En este canal de Youtube también hay muchos tutoriales de QT y GTK+, en español.
https://www.youtube.com/user/duartecorporation/search?query=qt