Publicado em C++, Exemplos Qt, Programação, Qt

Reimplementar o “keyPressEvent” de forma a realizar algum tipo de tratamento às teclas pressionadas (C++\Qt)

Como o Sr. Aurélio está a ficar sem pilhas, deixo aqui o exemplo.

A pergunta era:

“Como posso associar combinações de teclas a certas operações realizadas sobre uma interface construída em C++\Qt?”

O IDE já oferece algumas funções que facilitam esta tarefa, mas um forma muito de abordagem consiste em reimplementar a função:

void QDialog::keyPressEvent(QKeyEvent * e) [virtual protected]

Exemplo:

aurelio

Neste exemplo, pressionar a tecla “A” equivale a pressionar o “botão 01” da interface.

Da mesma forma, pressionar “ALT+1” equivale a pressionar o “botão 02” da interface.

Fazer o download do exemplo

Publicado em C++, Exemplos Qt, MySQL, Programação, Qt

Carregar uma imagem a partir do disco(png) para uma base de dadosMySql utilizando Qt

Título em Inglês: Load image from disk (png) to a MySql database using Qt

Este exemplo surgiu da necessidade de exemplificar uma forma de gravar uma imagem numa base de dados.

Uma aplicação muito simples seria 0 armazenamento das fotografias dos sócios de um determinado clube!

O processo que descrevo é no entanto bem mais versátil, pois com pequenas alterações, podemos armazenar praticamente qualque tipo de ficheiro binário na base de dados. Para o efeito vamos utilizar um campo do tipo BLOB.

Disponibilizo um exemplo de aplicação: https://app.box.com/s/l8d3xdbzafuie8e56f1y

Vejam o vídeo que contém a demonstração.

 

Publicado em C++, Exemplos Qt, MySQL, Programação, Qt

DB03 – Exemplos de escrita de uma aplicação para Acesso a Base de Dados

Mais um exemplo, que surge na sequência dos dois anteriormente publicados:

  1. DB01
  2. DB02

Neste caso, acescento uma nova funcionalidade, que consiste na sincronização de uma QTableView com um QDataWidgetMapper, ambos ligados ao mesmo modelo (QSqlRelationalTableModel).

db03_1

db03_2

Ainda falta corrigir alguns bugs, mas aceitam-se reclamações!

Fazer o download do exemplo: db03_v1

Publicado em C++, Exemplos Qt, Programação, Qt

Reimplementar um QPushButton ( reimplement a QPushButton )

A Classe QPushButton disponibiliza uma infinidade de membros que permitem controlar o aspeto e comportamento do botão.

Mesmo assim, perante tamanha fartura, podemos desejar alterar o comportamento destes Widgets.

O processo mais simples que encontrei consiste em:

  1. Criar uma classe derivada(myQPushButton) de QPushButton;
  2. Personalizar alguns aspetos relativos a estes novos botões (tamanho, … );
  3. Reimplementar os métodos virtuais ao meu gosto.

Neste exemplo, utilizei o botão no centro de uma QMainWindow, apenas para teste das suas funcionalidade.

E para testar um botão, nada melhor do que um botão. Claro!

Exemplo em vídeo:

Baixar exemplo: https://app.box.com/s/azg2gs33nxzx79jzd4gd

Publicado em Exemplos Qt, Programação

DB02 – Exemplos de escrita de uma aplicação para Acesso a Base de Dados

Com mais este exemplo, pretendo demonstrar alguns aspetos elementares acerca da ligação a uma base de dados MySQL utilizando a framework Qt.

Esta framework Qt disponibiliza um conjunto de classes (vistas/views) que, baseando-se na Arquitectura Modelo/Vista (Model/View Architecture), possibilitam a fácil manipulação dos dados, bem como a forma como estes são apresentados ao utilizador.

A base teórica em que assenta esta arquitectura é a MVC ( model–view–controller ), popularizada pela linguagem Smalltalk.
No caso do Qt, o papel desempenhado pelo controller é substituído por uma forma diferente de abstracção, o delegate.
A informação sobre este tipo de abordagem pode ser consultada em : http://qt-project.org/doc/qt-5.0/qtwidgets/model-view-programming.html

O exemplo DB02 consiste na utilização de uma janela principal (QMainWindow), através da qual podemos estabelecer/terminar a ligação à base de dados, bem como aceder aos dois formulários (QDialog) que, possibilitam as edição dos dados nas duas tabelas relacionadas, cujo modelo é representado na figura seguinte:

Continue reading “DB02 – Exemplos de escrita de uma aplicação para Acesso a Base de Dados”

Publicado em C++, Exemplos Qt, MySQL, Programação, Qt

DB01 – Exemplos de escrita de uma aplicação para Acesso a Base de Dados

db01

Com este exemplo pretendo sintetizar os aspetos mais elementares necessários à criação de uma aplicação que gere o acesso a uma base de dados.

Vou tentar resumir este assunto nos pontos seguintes, de forma a permitir que, aqueles que venham a sentir curiosidade por esta abordagem, a possam testar sem ter que atravessar um deserto de explicações complexas e por vezes contraditórias.

Vamos dividir a abordagem nos seguintes pontos:

  1. Instalar e configurar as ferramentas necessárias.
  2. Download e teste do exemplo

Continue reading “DB01 – Exemplos de escrita de uma aplicação para Acesso a Base de Dados”

Publicado em Exemplos Qt, Programação, Qt

Executar um QDialog no modo “Full Screen”

Esta é apena uma dica rápida para executar uma GUI, baseada na classe QDialog, em modo Full Screen.

Basta acrescentar uma instrução que define esta propriedade (ver linha 8)

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

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.setWindowState(Qt::WindowFullScreen);
    w.show();

    return a.exec();
}

Baixar um exemplo

Publicado em Exemplos Qt, Programação, Qt

Reprodução de vídeo numa GUI em Qt5

O exemplo que apresento hoje consiste num reprodutor de vídeo (video player) muito simples.

videoPlayer

O programa foi construído com base na classe QMainWindow , sendo o vídeo exibido no respetivo centralWidget.

A reprodução do vídeo torna-se possível após a criação de dois objectos:

  1. media = new QMediaPlayer(this); Trata-se de uma classe genérica, capaz de ser associada a vários tipos de media (audio, video, …)
  2. video = new QVideoWidget(this); Disponibiliza um objeto capaz de exibir vídeo, associado a um QMediaPlayer.

O resto do código é “paisagem”, ou seja, seve para criar menus, botões de abrir, reproduzir, pausar, parar e sair.

Obter código:

https://www.box.com/s/065r7ih3mhjv693ako9f

Nota:

Escolhi um vídeo ao acaso :)

Publicado em Exemplos Qt, Programação, Qt

A Passarola::Derivação de classes e reimplementação de métodos emC++\Qt

Este widget que acabei de construir visa essencialmente ajudar a exemplificar a derivação de uma classe base, alterando o seu comportamento original. Tal será conseguido pela inclusão de novas funcionalidade, bem como pela reimplementação de alguns métodos.

Como a linguagem\framework com que estou mais familiarizado é a dupla C++\Qt, este será o suporte utilizado para esta explificação.

A classe base

O Qt é formado por uma hierarquia de classes que estabelecem entre si diversos mecanismos de herança.

No nosso exemplo vamos criar um widget que irá herdar a classe QWidget, mediante um mecanismo de herança pública.

De forma a conhecermos melhor os objetos desta classe podemos:

  • consultar a sua referência, que irá depender da versão;
  • consultar uma diagrama de classes, que tive mais dificuldade em encontrar, tal como este;
  • procurar alguns exemplos online.

Sendo QWidget a classe base, e depois de consultada a informação acima mencionada, passemos então à sua derivação (subclassing). Continue reading “A Passarola::Derivação de classes e reimplementação de métodos emC++\Qt”