Qt 6 Parte 4: Conceitos básicos explicados

Qt 6 Parte 4: Conceitos básicos explicados

Qt é uma estrutura de desenvolvimento de aplicativos C++ multiplataforma que fornece um rico conjunto de ferramentas e bibliotecas para ajudar os desenvolvedores a construir rapidamente aplicativos multiplataforma para desenvolver interfaces gráficas de usuário (GUI) e aplicativos não-GUI.

Qt 6 Parte 1: Introdução, instalação e uso simples https://blog.csdn.net/cnds123/article/details/130730203

Qt 6 Parte 2: Estrutura do projeto e uso de arquivos de recursos https://blog.csdn.net/cnds123/article/details/130741807

Qt 6 Parte 3: Lançamento do projeto https://blog.csdn.net/cnds123/article/details/130827966

Qt Creator é um ambiente de desenvolvimento integrado (IDE) multiplataforma usado principalmente para desenvolvimento de aplicativos Qt.

Visão geral do sistema Build do Qt Creator

Qt Creator oferece suporte a vários sistemas de construção, cada um com suas próprias características e uso.

Arquivos de configuração para diferentes sistemas de construção:

Qmake é um arquivo .pro (nome do aplicativo.pro)

CMake é o arquivo CMakeLists.txt

Qbs é um arquivo .qbs (nome do aplicativo.qbs)

Aqui está uma visão geral do sistema de compilação:

QMake

QMake é o sistema de construção tradicional do Qt, que usa arquivos simples .pro (projeto) e .pri (include) para definir o processo de construção do projeto.

Características :

  • Totalmente integrado com Qt.
  • Fácil de aprender e adequado para projetos de pequeno e médio porte.
  • Makefile é gerado automaticamente e possui bom suporte multiplataforma.

uso :

  1. Crie um arquivo .pro para definir os arquivos, dependências de biblioteca e outros parâmetros de construção no projeto.
  2. Abra o arquivo .pro no Qt Creator e o IDE tratará automaticamente da configuração da compilação.
  3. Desenvolva aplicativos usando os recursos de construção, execução e depuração do Qt Creator.

Um arquivo .pro simples pode ter esta aparência:

FONTES += main.cpp MyWidget.cpp

CABEÇALHOS += MeuWidget.h

QT += widgets

No Qt Creator, abrir um arquivo .pro será automaticamente reconhecido como um projeto QMake. Você pode modificar o diretório de construção, as opções do compilador, etc. nas configurações do projeto. Deve-se observar que novas versões do Qt Creator, como a versão 10.0.1, não oferecem mais a opção QMake ao criar um novo projeto.

CMake

CMake é um sistema de construção de plataforma cruzada de código aberto que usa arquivos CMakeLists.txt para definir o processo de construção. Atualmente, a nova versão do Qt Creator usa isso por padrão.

Características :

  • Suporta estruturas de projetos complexos e grandes projetos.
  • Módulo poderoso e suporte a scripts.
  • Gere arquivos de construção nativos em plataformas, como projetos Makefile, Ninja, Visual Studio, etc.

uso :

  1. Crie um arquivo CMakeLists.txt e use comandos CMake para definir regras de construção do projeto.
  2. Abra o projeto no Qt Creator e especifique CMake como sistema de compilação.
  3. Desenvolva aplicativos usando os recursos de construção, execução e depuração do Qt Creator.

Um arquivo CMakeLists.txt simples pode ter esta aparência:

cmake_minimum_required(VERSÃO 3.5)

projeto (MyApp VERSÃO 1.0)

definir(CMAKE_CXX_STANDARD 11)

definir(CMAKE_CXX_STANDARD_REQUIRED Verdadeiro)

add_executável (MyApp main.cpp)

No Qt Creator, abrir o arquivo CMakeLists.txt será automaticamente reconhecido como um projeto CMake. Você pode modificar o diretório de construção, o gerador CMake, etc. nas configurações do projeto

Qbs

QbsQbs (Qt Build System) é uma nova ferramenta de construção desenvolvida pela Qt para substituir o QMake.

Características :

  • Configuração baseada em regras, mais moderna e flexível.
  • Plataforma cruzada, suporta compilações paralelas e compilações incrementais.
  • Integrado com módulos Qt e outras cadeias de ferramentas.

uso :

  1. Crie um arquivo .qbs para definir a lógica e as dependências de construção do projeto.
  2. Selecione Qbs como sistema de compilação no Qt Creator.
  3. Defina as configurações de compilação e desenvolva usando os recursos do Qt Creator.

Um arquivo .qbs simples pode ter esta aparência:

Projeto {

  nome: "MeuApp"

  arquivos: "main.cpp"

  Depende de {nome: "cpp" }

}

No Qt Creator, abrir um arquivo .qbs será automaticamente reconhecido como um projeto Qbs. Você pode modificar o diretório de construção, as opções do compilador, etc. nas configurações do projeto.

Para os sistemas de compilação suportados pelo Qt Creator, o Qt Creator gerará automaticamente os arquivos de configuração de compilação correspondentes, como arquivos .pro (qmake), arquivos CMakeLists.txt (CMake), etc. Você pode editar esses arquivos diretamente no Qt Creator ou usar um editor externo para fazer alterações. Na maioria dos casos, esses arquivos são gerados automaticamente quando o projeto é criado e, na maioria das vezes, você provavelmente não precisará modificar esses arquivos manualmente. Isso ocorre porque o Qt Creator fornece uma maneira gráfica de gerenciar essas configurações, como adicionar ou remover arquivos e bibliotecas de origem, definir sinalizadores do compilador, etc., por meio da página de propriedades do projeto. Essas alterações são refletidas automaticamente no arquivo de configuração de compilação. Observe que depois de fazer alterações no arquivo de configuração de compilação, você deve testar o processo de compilação para ter certeza de que tudo está funcionando conforme o esperado.

Visão geral do método Qt de criação de aplicativos GUI C++

No Qt, existem duas maneiras principais de criar aplicativos GUI C++:

1. Use ferramentas Qt

☆Se você usar Qt Widgets, poderá usar o Designer no Qt Creator para projetar e organizar visualmente os controles e, em seguida, usar o código C++ para escrever a lógica.

☆Se você usar o Qt Quick, poderá usar o Qt Quick Designer no Qt Creator para projetar e fazer o layout visual da interface QML e, em seguida, usar o código C++ para escrever lógica.

☆Se você usar o Qt Quick Controls 2, poderá usar o Qt Quick Designer e a Qt Quick Controls Gallery no Qt Creator para projetar e organizar visualmente os controles e, em seguida, usar o código C++ para escrever lógica.

Qt Widgets, Qt Quick e Qt Quick Controls 2 são diferentes módulos de UI (coleções de componentes) na estrutura Qt, usados ​​para criar diferentes tipos de interfaces de usuário.

Qt Widgets é uma coleção de classes na estrutura Qt. Eles representam vários elementos GUI, como botões, controles deslizantes, caixas de texto, etc., e são adequados para criar aplicativos de desktop tradicionais.

Qt Quick é uma tecnologia de interface de usuário moderna e dinâmica baseada em QML. Ele fornece uma linguagem descritiva e um conjunto de componentes de UI para criar interfaces de usuário dinâmicas e suaves. Além disso, Qt Quick Controls 2 faz parte do Qt Quick, fornecendo um conjunto de controles de UI modernos e consistentes, como botões, controles deslizantes, caixas de diálogo, etc.

Qt Designer, Qt Quick Designer e Qt Quick Controls Gallery são ferramentas integradas do Qt Creator.

Qt Designer: É uma ferramenta visual para criação e edição de interfaces de usuário baseadas em Qt Widgets. Você pode arrastar, soltar e organizar controles intuitivamente na interface de design, definir as propriedades dos controles e editar funções de resposta a eventos, como sinais e slots de controles. Esta ferramenta é ideal para desenvolver aplicativos de desktop tradicionais baseados em janelas.

Qt Quick Designer: Esta é uma ferramenta visual para criar e editar interfaces de usuário baseadas em Qt Quick. Semelhante ao Qt Designer, você pode arrastar, soltar e organizar controles na interface de design, definir propriedades de controles e editar funções de resposta a eventos de controles. Esta ferramenta é ideal para desenvolver aplicativos dinâmicos, reativos e baseados em QML.

Galeria Qt Quick Controls: Este é um aplicativo que mostra todos os controles e estilos do Qt Quick Controls 2. Você pode executá-lo para visualizar e testar vários controles e estilos para escolher aqueles que funcionam melhor para seu aplicativo. Esta ferramenta pode ajudá-lo a entender e usar melhor o Qt Quick Controls 2.

Além disso, o Qt Design Studio é uma ferramenta independente e poderosa de design e desenvolvimento de UI que pode criar interfaces de usuário baseadas em Qt Quick e Qt Quick Controls 2. O Qt Design Studio também suporta a importação de protótipos de ferramentas de design como Photoshop e Sketch, permitindo que designers e desenvolvedores colaborem melhor.

2. Escreva código manualmente: Crie aplicativos GUI por meio de programação totalmente manual.Você pode usar QWidgets, Qt Quick e Qt Quick Controls 2 módulos Qt na estrutura Qt para criar e operar componentes GUI diretamente em código C++. Este método requer que você esteja familiarizado com as classes e APIs do Qt e codifique os componentes da GUI um por um. Embora essa abordagem possa fornecer um controle mais flexível e um maior grau de personalização, ela exige mais tempo e esforço para escrever e manter o código.

Uma visão geral de como diferentes sistemas de construção lidam com arquivos de recursos (por exemplo, imagens, música)

Diferentes sistemas de compilação (qmake, CMake ou Qbs) processam arquivos de recursos (como imagens e músicas) de maneira diferente. Em alguns casos, é necessário modificar manualmente o arquivo de configuração para garantir que esses recursos sejam incluídos corretamente no projeto. No Qt Creator, ao usar o qmake, você pode editar arquivos .qrt através da interface gráfica - os recursos geralmente são gerenciados através do Qt Resource System (QRC), sem a necessidade de lidar manualmente com os detalhes de caminhos de arquivos e carregamento de recursos, o que pode simplifique os recursos Gerenciamento de documentos. Com CMake e Qbs, pode ser necessário editar manualmente arquivos de texto para gerenciar recursos.

Esta é a forma básica como cada sistema de compilação lida com arquivos de recursos:

qmake

Ao usar o qmake, os recursos geralmente são gerenciados através do Qt Resource System (QRC). Você precisa criar um arquivo de recursos (geralmente com extensão .qrc) e listar os recursos usados ​​no projeto. Em seguida, adicione uma referência a esse arquivo de recurso no arquivo .pro.

Por exemplo, seu arquivo .qrc pode ter esta aparência:

<RCC>

    <qresource prefix="/images">

        <arquivo>logotipo.png</arquivo>

        <arquivo>plano de fundo.jpg</arquivo>

    </qresource>

    <qresource prefix="/sons">

        <arquivo>click.wav</arquivo>

    </qresource>

</RCC>

CMake

Visão geral das etapas para adicionar e usar arquivos de recursos em projetos de construção do CMake:
1. Crie arquivos de recursos (.qrc): Primeiro, você precisa criar manualmente um novo arquivo de recursos Qt (como usar o Bloco de Notas) no diretório raiz do projeto , por exemplo "recursos.qrc". Este arquivo é um arquivo XML que lista todos os arquivos de recursos a serem incluídos no aplicativo.
Editar arquivos de recursos: No arquivo "resources.qrc", você pode adicionar seus arquivos de recursos. O formato do arquivo é o seguinte:
<RCC>
    <qresource prefix="/">
        <file>images/myicon.png</file>
        <file>images/mybackground.png</file>
        <file>sounds/mysound .wav</ file>
        <file>videos/myvideo.mp4</file>
    </qresource>
</RCC>
Neste exemplo, o arquivo de recurso é adicionado ao caminho raiz ("/"). Você precisa modificar esses nomes de arquivo de acordo com o caminho real do arquivo.
2. Adicione arquivos de recursos a CMakeLists.txt: Em seguida, você precisa adicionar o arquivo resources.qrc no arquivo CMakeLists.txt. No comando add_executable ou add_library, inclua o arquivo resources.qrc. Por exemplo: add_executable(MyApp main.cpp window.cpp resources.qrc)
Seu arquivo CMakeLists.txt já contém a variável PROJECT_SOURCES. Você deve modificar seu CMakeLists.txt assim:
set(PROJECT_SOURCES
    main.cpp
    mainwindow.cpp
    mainwindow.h
    mainwindow .ui
    resources.qrc #Adicione seus arquivos de recursos aqui
)
3. Use arquivos de recursos no código: Agora, você pode usar esses arquivos de recursos no código. Você pode usar o URL :/ para fazer referência a esses arquivos. Por exemplo, para definir o ícone e a imagem de fundo do formulário, se sua classe principal do formulário for MainWindow, você pode adicionar o seguinte código no construtor de MainWindow:
// Definir o ícone do formulário
this->setWindowIcon(QIcon(" :/images/meuicon.png"));

//Defina a imagem de fundo no formato
this->setStyleSheet("QMainWindow { background-image: url(:/images/mybackground.png) }");
Para arquivos de áudio e vídeo, você pode usar a classe QMediaPlayer para reproduzi-los :
c++ Copiar código
// Reproduz arquivos de áudio
QMediaPlayer* player = new QMediaPlayer;
player->setMedia(QUrl("qrc:/sounds/mysound.wav"));
player->play();

// Reproduz arquivos de vídeo
QMediaPlayer* videoPlayer = new QMediaPlayer;
QVideoWidget* videoWidget = new QVideoWidget;
videoPlayer->setVideoOutput(videoWidget);
videoPlayer->setMedia(QUrl("qrc:/videos/myvideo.mp4"));
videoWidget-> show();
videoPlayer->play();
Estes são os passos para usar o sistema de recursos Qt em um projeto construído com CMake.

Qbs

Qbs é uma nova ferramenta de construção que também possui sua própria maneira de lidar com recursos. Nos arquivos .qbs, você pode usar o item Grupo para especificar arquivos de recursos e incluí-los no projeto.

Por exemplo:

Grupo {

    nome: "Imagens"

    arquivos: ["images/logo.png", "images/background.jpg"]

    arquivoTags: ["imagem"]

}

Grupo {

    nome: "Sons"

    arquivos: ["sons/click.wav"]

    arquivoTags: ["som"]

}

Uma coisa a esclarecer aqui é que depois de criar o arquivo de configuração (arquivo .qrc, CMakeLists.txt ou .qbs) e definir as regras para inclusão de recursos, ao adicionar novos arquivos de recursos ao diretório ou modo especificado, você pode não precisar para atualizar manualmente o arquivo de configuração sempre. Por exemplo:

  • No qmake, se você especificar um diretório no arquivo .qrc, todos os arquivos de recursos nesse diretório serão incluídos, eliminando a necessidade de modificar o arquivo .qrc sempre que você adicionar um novo arquivo.
  • No CMake, você pode escrever um script para incluir automaticamente todos os arquivos em um diretório como recursos ou usar curingas para especificar arquivos de recursos para que não seja necessário modificar CMakeLists.txt ao adicionar novos arquivos.
  • Da mesma forma, no Qbs, você pode especificar um diretório para que todos os arquivos nesse diretório sejam considerados recursos.

No entanto, se você alterar a estrutura dos seus arquivos de recursos, como adicionar novos diretórios ou alterar a forma como os arquivos são organizados, ainda será necessário atualizar esses arquivos de configuração para refletir essas alterações. Além disso, você também precisará editar manualmente esses arquivos de configuração se desejar que seus recursos tenham tratamento especial no sistema de compilação, como especificar diferentes prefixos de recursos ou incluir diferentes conjuntos de recursos para diferentes destinos de compilação.

Visão geral dos métodos de interação e comunicação do Qt

A estrutura Qt fornece uma variedade de maneiras de implementar a interação e a comunicação entre objetos. Aqui estão alguns dos principais mecanismos:

  1. Sinais e slots :
    • Este é o mecanismo de comunicação mais poderoso do Qt e é o núcleo da interação entre objetos Qt.
    • Um sinal é uma mensagem enviada por um objeto indicando que ocorreu um evento ou que ocorreu uma mudança de estado.
    • Slots são funções que podem responder a sinais, que podem ser funções-membro comuns, funções estáticas ou expressões lambda.
    • Quando um sinal é emitido, todos os slots conectados a este sinal serão chamados.
    • Use a função QObject::connect() para estabelecer a conexão entre sinais e slots.
  2. Manipulação de eventos :
    • Quase todos os eventos da interface do usuário no Qt, como cliques do mouse, pressionamentos de teclas, etc., são tratados através do sistema de eventos.
    • Um evento é uma instância da classe QEvent, que contém todas as informações relevantes sobre o evento.
    • Os eventos são distribuídos aos objetos correspondentes por meio do loop de eventos e processados ​​pela função event() do objeto.
    • Você pode personalizar o processamento de eventos substituindo a função event() ou funções de manipulação de eventos mais específicas (como mousePressEvent(), keyPressEvent(), etc.).
  3. Comunicação entre processos (IPC ) :
    • Qt fornece uma variedade de mecanismos IPC, incluindo, mas não limitado a:
    • DBus : Mecanismo IPC para sistemas do tipo Unix.
    • Soquetes TCP/UDP : A base da comunicação de rede, o Qt fornece suporte para programação de soquetes através de QTcpSocket, QUdpSocket e outras classes.
    • Memória Compartilhada : Permite que diferentes processos acessem a mesma área de memória.
    • Pipes : Mecanismo IPC tradicional, Qt suporta comunicação de pipe através da classe QProcess.
  4. Multi - threading :
    • Qt suporta programação multithread, o que pode ser alcançado herdando a classe QThread ou usando o módulo QtConcurrent.
    • Com threads, você pode executar tarefas de longa duração sem bloquear o thread principal, mantendo a interface do usuário responsiva.
    • Qt fornece sinal thread-safe e conexões de slot para enviar sinais com segurança entre diferentes threads.
  5. Temporizadores : _
    • Os temporizadores podem enviar sinais após um intervalo de tempo específico, que pode ser usado para acionar eventos periódicos, como atualizar a IU regularmente ou verificar se uma determinada condição é atendida. Qt fornece uma variedade de ferramentas de timer, como QTimer, QElapsedTimer, etc., permitindo que os desenvolvedores executem regularmente tarefas específicas, como atualização de interface, processamento de dados, etc. Os temporizadores podem ser usados ​​para implementar efeitos de animação, agendamento de tarefas e outras funções.

A descrição acima é uma visão geral dos métodos de interação e comunicação comumente usados ​​​​no Qt. Dependendo das necessidades e dos cenários do aplicativo, você pode escolher um método adequado para implementar a interação e a transferência de dados entre componentes.

Próxima palestra, Qt 6 Parte 5: Criando um Menu

Acho que você gosta

Origin blog.csdn.net/cnds123/article/details/135401606
Recomendado
Clasificación