Programación Qt (1) -Comprensión

0. Comparación entre Qt y MFC

Durante la entrevista, es posible que me preguntes por qué se usa QT en lugar de MFC para desarrollar C ++. Después de consultar algo de información, resumí los siguientes puntos, puedes responder esto en la entrevista:

Hablemos primero de QT:

  1. Multiplataforma, se puede desarrollar en múltiples plataformas como Windows, Linux y Unix.
  2. El desarrollo de GUI de QT es mejor que MFC y la biblioteca de interfaz QT admite CSS, lo que hace que el diseño de la interfaz sea más conveniente y hermoso.
  3. Las características orientadas a objetos son más obvias que MFC: mantiene una excelente coherencia en nombres, herencia, organización de clases, etc., y el código es más elegante de escribir.
  4. MFC no se ha desarrollado mucho en los últimos años, QT se ha actualizado y sus funciones son cada vez más potentes.

Hablemos de MFC:

  1. MFC encapsula principalmente la API de Windows, por lo que solo se puede usar en la plataforma Windows y su estado en la plataforma Windows es incuestionable.
  2. MFC ejecuta programas de manera más eficiente que QT.
  3. La biblioteca de MFC es más completa que la de QT.

Resumen personal:

  1. En esta etapa, MFC todavía tiene una gran cantidad de usuarios. En los últimos años, QT no ha podido cambiar el estado de MFC por el momento, pero debería adoptar una visión a más largo plazo.
  2. Tanto QT como MFC son solo herramientas de desarrollo para programación. Lo más importante de un programa es la arquitectura, seguida del algoritmo y finalmente la implementación de la interfaz. Debería centrarse más en lo básico: características de C/C++, estructuras de datos y algoritmos, etc.

1. El significado de Qt

1. Introducción a Qt:

Qt es un marco de aplicación de interfaz gráfica de usuario C++ multiplataforma. Proporciona todas las funciones que una interfaz gráfica requiere para los desarrolladores internos exitosos. Orientado a objetos, fácilmente extensible y permite una verdadera programación de componentes.

2. Desarrollo Qt:

  • Fue desarrollado por primera vez por Fantastic Technology Company en 1991.
  • Entró en el ámbito comercial en 1996 (proyecto KDE fundado por Matthias Ettrich).
  • Qt fue adquirida por Nokia en 2008. Se convirtió en un lenguaje de programación propiedad de Nokia.
  • En 2012, Qt fue adquirida por Digia.
  • En 2014, se lanzó el entorno de desarrollo integrado multiplataforma Qt Creator 3.1.0. Ese mismo año, se lanzó la versión oficial 5.3, que admite las principales plataformas actuales: iOS, Android, WP (Windows Phone ha sido cerrado) y otras plataformas móviles.

3. Plataforma:

  • Windows: XP, Vista, win7, win8, win10
  • Unix/Linux: Ubuntu (se recomienda la versión LTS)
  • Mac OS X
  • Integrado: plataforma Linux integrada con soporte framebuffer, Windows CE

4. Versión Qt:

  • Versión comercial: para el desarrollo de software comercial, proporciona distribución de software comercial tradicional y proporciona actualizaciones gratuitas y servicios de soporte técnico dentro de un período comercial limitado.
  • Versión de código abierto: software de código fuente diseñado para la libertad de desarrollo, que proporciona las mismas funciones que los productos comerciales, gratuito bajo la Licencia Pública General GUN.

5, Creador Qt:

Es un entorno de desarrollo multiplataforma para el desarrollo Qt. Tiene dos beneficios principales: 1. Proporciona el primer entorno de desarrollo integrado (IDE) diseñado para soportar el desarrollo multiplataforma y garantiza que los desarrolladores que están expuestos al marco Qt para el La primera vez puede ponerse en marcha rápidamente. 2. Incluso si no desarrolla aplicaciones Qt, Qt Creator es un IDE potente y fácil de usar.

6. Ventajas de Qt:

  • 1. Multiplataforma, compatible con casi todas las plataformas.
  • 2. La interfaz es simple y fácil de usar. Aprender el marco Qt es de referencia para aprender otros marcos.
  • 3. Orientado a objetos, altamente modular, buena reutilización, fácil de desarrollar
  • 4. API enriquecida
  • 5. Una gran cantidad de documentos de desarrollo.
  • 6. El desarrollo integrado es posible

2. Instalación de Qt5

1. Descargar Qt5

  • 1. Dirección de descarga de la dirección de descarga sin conexión de Qt
  • 2. Seleccione el proyecto de archivo -> qt -> seleccione la versión (elegí 5.12.12. Las grandes empresas tienen una gran acumulación técnica debido al bagaje histórico, y el período de actualización de la versión es largo y propenso a problemas) -> Seleccione el Entorno de desarrollo según la plataforma. Aquí estoy. Usando Windows.
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
  • 3. Una vez completada la descarga, si tiene una cuenta Qt, puede instalarla directamente sin prestar atención a la red. Si no tiene una cuenta Qt, puede desconectarse de Internet. De esta manera puede omitir la cuenta. inicie sesión y seleccione una ubicación para la instalación.
    Insertar descripción de la imagen aquí
  • 4. Seleccione los elementos de instalación:
    • En el sistema Windows, será más conveniente elegir la herramienta de compilación desarrollada por Windows, haga clic en Siguiente para configurar los componentes de instalación y seleccione la versión MSVC de 32 bits y la versión de 64 bits;
    • Fuentes es el código fuente y se recomienda verificarlo. Puede comprender los principios de Qt mirando el código fuente;
    • UWP tiene muy pocos escenarios de uso y desarrollo de terminales móviles en Windows, y los teléfonos móviles basados ​​​​en Windows casi se han retirado del mercado.
    • Tools es una herramienta de depuración de depuración. Si está integrada, agregue una marca de verificación a Strawberry Perl;
      Insertar descripción de la imagen aquí
  • 5. Una vez completada la configuración de Qt, acepte el acuerdo y luego espere la instalación. El tiempo de instalación es diferente según la configuración de la computadora.
  • 6. La instalación ya está completa.
    Insertar descripción de la imagen aquí

2. Comprender el entorno Qt Creator

Insertar descripción de la imagen aquí

  • La interfaz principal de Qt tiene
    • Bienvenido: Proyectos, Muestras, Tutoriales, Marketplace
    • Editar: uso de depuración de proyectos
    • Diseño: uso de depuración de proyectos
    • Depuración: utilizado para la depuración del proyecto.
    • Proyecto: Presentación de la estructura del proyecto.
    • Ayuda: La ayuda proporciona muchos archivos de biblioteca utilizados en el proceso de desarrollo de Qt.

3. Introducción al proyecto Qt

1. Nuevo proyecto

  • 1. En el módulo de bienvenida -> Nuevo-> cree un nuevo proyecto, que incluya la aplicación, la biblioteca, otros proyectos (complemento QT), un proyecto vacío (Proyecto que no es Qt) y una biblioteca de importación (proyecto de importación).
    Insertar descripción de la imagen aquí

  • 2. Seleccione Construir sistema. Qt usa el sistema de compilación qmake (compatible después de 5.0). Si el proyecto necesita migrar el entorno, como Linux, etc., seleccione CMake.
    Insertar descripción de la imagen aquí

  • 3. Clase base->Seleccione QMainWindow (ventana principal), QWidget (vista no modal), QDialog (cuadro de diálogo) en detalle
    Insertar descripción de la imagen aquí

  • 4. Archivo de traducción, idioma: seleccione el idioma de acuerdo con los requisitos del proyecto, aquí seleccione China continental
    Insertar descripción de la imagen aquí

  • 5. El conjunto de herramientas del kit se selecciona según las necesidades. Aquí elijo la versión de 32 bits de 2017.
    Insertar descripción de la imagen aquí

    • MSVC: Es un entorno de compilación desarrollado por Microsoft, cuando utilizamos el sistema operativo Windows para el desarrollo, hay menos posibilidades de que se produzcan errores al utilizar el entorno de compilación de Microsoft. Todos tenemos sistemas operativos y aplicaciones de 32 bits, y el rango máximo de direccionamiento es solo 4G. Aquí hacemos una demostración simple. Son básicamente aplicaciones pequeñas y no requieren memoria 4G. Elegimos el entorno de compilación MSVC de 32 bits.
  • 6. Si necesita admitir dispositivos móviles en el control de versiones, simplemente agregue la configuración correspondiente. En aras de la simplicidad, no necesitamos agregar control de versiones aquí:
    Insertar descripción de la imagen aquí

  • Gestión de proyectos: se utiliza en proyectos de desarrollo colaborativo de varias personas, también se requieren funciones para la iteración y reversión de la versión, hablaremos de ello más adelante, solo haga clic para completar.

2. Introducción a los archivos del proyecto.

  • 1. Una vez creado el proyecto, el entorno de desarrollo qt nos ayuda a crear todos los archivos principales.
    Insertar descripción de la imagen aquí
  • 2. Una vez completada la creación, podemos ejecutarlo para ver el efecto:
    Insertar descripción de la imagen aquí
  • 3. Introducción a Main.cpp
    Insertar descripción de la imagen aquí
    • Función principal, el punto de entrada de la aplicación.
    • QApplication: el archivo de encabezado de la aplicación Qt, que es necesario para cada programa de interfaz desarrollado por Qt.
    • En la figura anterior, la función principal es la función principal con parámetros.
    • QApplication a(argc, argv); Crea un objeto de aplicación a del marco Qt. Cada aplicación tiene solo un objeto.
    • QTranslator: traductor
    • MainWindow: crea un objeto de ventana personalizado w
    • w.show(): El objeto de ventana creado w se puede mostrar llamando a la función show().
    • a.exec(): objeto de aplicación a, llama a la función exec() para recibir señales en un bucle, procesar las señales y salir de la aplicación si la señal está cerrada.
  • 4. Introducción a la ventana principal
    Insertar descripción de la imagen aquí
    • Q_OBJECT: Las señales y las ranuras son la base del desarrollo de Qt. Pueden conectar dos objetos no relacionados entre sí. Las ranuras son las mismas que las funciones ordinarias de C ++. Solo después de que están conectadas a las señales, cuando se envía una señal, la ranura se llamará automáticamente. Los mecanismos de señal y ranura en Qt solo se pueden usar si se agrega Q_OBJECT.
    • padre: un puntero a la clase padre.

3. Problema del depurador

  • Algunos amigos pueden encontrar problemas con el depurador y descubrir que el depurador no funciona, esto se debe a que el SDK de win10 no tiene herramientas de depuración instaladas de forma predeterminada y debe instalarlas usted mismo.
    Insertar descripción de la imagen aquí

四,QPushButton

1. Cree manualmente QPushButton

  • 1. Introduce el archivo de cabecera, #include
  • 2. Cree el objeto QPushButton en el constructor y recuerde eliminar el destructor.
  • 3. Establezca las propiedades del botón:
    Insertar descripción de la imagen aquí

2. Cree visualmente QPushButton

  • Haga doble clic en el tablero de escritorio .ui que se creará en Editar->Archivo de formularios.
    Insertar descripción de la imagen aquí
    La interfaz gráfica es muy conveniente para crear y modificar botones. Lo que ve es lo que necesita. En la esquina inferior derecha está el cuadro de configuración de propiedades del objeto. , donde puedes modificar los datos.En la interfaz visual puedes ver el efecto de las modificaciones en el tiempo.

3. Introducción a las funciones comunes del panel de propiedades.

Insertar descripción de la imagen aquí

Algunos parámetros de atributos de uso común:

  • ObjectName: Nombre del objeto, que no se puede modificar en el cuadro de propiedades, pero se puede modificar haciendo clic derecho en el botón Objeto > Modificar nombre de objeto.
  • Habilitado: si se debe habilitar el botón. Si no está habilitado, todo el botón estará gris y no se podrá hacer clic durante el tiempo de ejecución.
  • Geometría: parámetros geométricos, (220, 110) es el origen de las coordenadas, 91x31 es el ancho y alto del objeto
  • Paleta: parámetro de color, aquí hereda directamente el color de la clase principal
  • Fuente: parámetros de fuente
  • Cursor: Cursor se refiere al estilo del cursor cuando el mouse se mueve hacia el botón, aquí todavía es una flecha.
  • hoja de estilo: ajustar color, fondo, color de fuente

5. Documento de ayuda de Qt: uso de Qt Assistant

1. Abra el Asistente Qt

Haga clic en el sistema, busque asistente y vea:
Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Podemos aprender Qt a través del documento de ayuda. El asistente tiene una introducción a todas las clases, controles y métodos, lo cual nos resulta muy útil para aprender Qt.
Por ejemplo, indexe para buscar QPushButton:
Insertar descripción de la imagen aquí

2. Presente brevemente el contenido del documento asistente.

Insertar descripción de la imagen aquí

  • qmake:QT+=widgets : Al compilar, el módulo de widgets debe agregarse al archivo .pro, pero este es un módulo básico y se ha agregado de forma predeterminada. Si necesitamos la red TCP y necesitamos usar la clase QTcpSocket, entonces Es necesario agregar el módulo de red al archivo .pro; de lo contrario, no se podrá utilizar la red.
    Insertar descripción de la imagen aquí
  • Hereda : QAbstractButton Esto le dice a la clase que hereda la clase QAbstractButton.
  • InHerited By : QCommandLinkButton, una subclase de esta clase.
  • Además, existen algunos métodos públicos, protegidos y privados que nos proporcionan interfaces ricas al escribir programas.

6. Árbol de objetos Qt

1. ¿Qué es un árbol de objetos?

  • QObject en Qt usa un árbol de objetos para organizarse y administrarse. Por ejemplo, si crea un QObject y especifica el objeto principal, se agregará a la lista secundaria () del objeto principal, es decir, la variable QList <QObject *> .
  • Cada vez que creamos un nuevo objeto, le asignaremos una clase padre, por ejemplo: un objeto myObject, y a este objeto también se le asignará una clase padre, es decir, QObject cuando se construya.

2. Beneficios del modo de árbol de objetos

  • La ventaja es que cuando se destruye el objeto principal, el objeto secundario también se destruirá, lo que simplifica hasta cierto punto el mecanismo de reciclaje de memoria. Qt utiliza el modo de árbol de objetos. Cuando se destruye el objeto principal, el objeto secundario se elimina automáticamente. No es necesario escribir un montón de código para liberar el objeto.
  • El sistema liberará la memoria de toda la estructura en función de esta estructura de árbol.
    Insertar descripción de la imagen aquí

3. Problemas con los árboles de objetos.

  • La destrucción automática implica problemas de sintaxis de C ++. Si el subobjeto se libera automáticamente debido al mecanismo del sistema, el subobjeto puede liberarse dos veces, destrucción excesiva y el objeto en el montón se bloqueará cuando se libere la pila.
    Insertar descripción de la imagen aquí
  • Después de ajustar el orden de liberación de la pila, el problema del bloqueo se puede resolver:
    Insertar descripción de la imagen aquí

7. Señales y slots en Qt

Similar a enviar y recibir.

1. Señal y ranura

  • Signal & Slot (Signal & Slot) es la base de Qt y una innovación importante de Qt. Debido al mecanismo de programación de señal y ranura, se vuelve más intuitivo y simple manejar la interacción de varios componentes de la interfaz en Qt. Puede hacer Los desarrolladores de aplicaciones unen objetos que no se entienden entre sí.

2. Señal

  • Las señales son eventos que se envían bajo circunstancias específicas. Por ejemplo, la señal más común para PushButton es la señal clicked() enviada cuando se hace clic con el mouse. La señal más común para un ComboBox es la señal CurrentIndexChanged() enviada cuando la lista seleccionada cambios de elementos.
  • La programación GUI consiste principalmente en responder a las señales de cada componente de la interfaz, solo necesita saber qué señales enviar en qué circunstancias y responder y procesar estas señales de manera razonable.

3. Ranura

  • Una ranura es una función de respuesta a una señal. Como una función general de C++, se puede definir en una clase pública, privada o protegida, puede tener cualquier parámetro y también se puede llamar directamente.
  • La diferencia entre las funciones de ranura y las funciones generales es que las funciones de ranura se pueden asociar con una señal. Cuando se envía la señal, la función de ranura asociada se ejecuta automáticamente.
  • La asociación entre señales y slots se implementa mediante la función QObject.connect(), el formato básico es:
QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));
参数1:信号的发送者
参数2:发送的信号
参数3:信号的接收者
参数4:处理函数(槽函数)

4. Ejemplo de señal y ranura QPushButton

  • 1. Abrimos Qt Assistant, buscamos QPushButton y encontramos que no hay señal, solo un espacio público.
    Insertar descripción de la imagen aquí
  • Encuentre la clase principal de QPushButton, QAbstractButton y encuentre señales
    Insertar descripción de la imagen aquí
  • 2. Puedes ver que hay 4 señales dentro.
    Insertar descripción de la imagen aquí
  • 3. En cuanto a la función de ranura de respuesta, generalmente está dentro de la ventana, por ejemplo, la clase MainWindow es una subclase de QMainWindow:
    Insertar descripción de la imagen aquí
  • 4. Encuentra la función en el espacio público.
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
  • 5,Preste atención al uso de hacer clic y hacer clic: hacer clic es una señal y hacer clic es una función de ranura., los ejemplos son los siguientes:
    Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/MOON_YZM/article/details/130544390
Recomendado
Clasificación