Como criar uma aplicação para o Nokia N900 usando Qt

O Nokia N900 é um excelente smartphone. De fato, ele é basicamente um computador móvel rodando Linux. Possui tela sensível ao toque e um teclado real assim como vários recursos embutidos: sensores de proximidade e iluminação, acelerômetro, câmera, Bluetooth, Wi-Fi, GPS e Infravermelho. Isso torna o N900 o dispositivo perfeito para seu próximo projeto ou novas aplicações.

O primeiro passo para criar apps para o N900 é baixar e instalar o Nokia Qt SDK. O Qt é um SDK muito poderoso para a criação de aplicações para diversos ambientes, como Windows, Linux, Mac, Maemo (que é o sistema que roda do N900), Symbian e Windows CE. Isso significa que você precisa escrever o código uma única vez e terá aplicações nativas em todos esses ambientes.

Após ter instalado o Nokia Qt SDK, abra o Qt Creator que é o IDE incluído com o Qt. Você deve ver algo como isso:

Nokia qt sdk for windows

Agora, precisa criar um novo projeto. Vá para File->New File or Project. Aqui, dentro de Qt C++ Project, precisa selecionar Mobile Qt Application e clicar em Choose.

Agora precisa inserir o nome e caminho do projeto. Certifique-se de não usar espaços e caracteres especiais tanto no nome quanto no caminho do projeto.

Na próxima janela você irá definir o alvo de seu projeto. As opções mostradas dependerão dos SDKs específicos que você tem instalado em seu computador. No mínimo você deve ter o Maemo, o Qt Simulator e Symbian Device, que são todos parte do Nokia Qt SDK. Selecione Maemo e Qt Simulator. O Maemo é a plataforma do N900 e o Qt Simulator é útel para desenho e depuração no PC.

Em seguida você verá os detalhes da classe que serão geradas para você. Deixe tudo como no padrão. Será criada uma classe chamada MainWindow derivada de QMainWindow. Nada a se preocupar aqui, basicamente é uma classe que representa uma janela. Existem três arquivos que serão criados para essa classe; o arquivo mainwindow.cpp contém a implementação dos métodos da classe, mainwindow.h define a classe e a lista de métodos, e mainwindow.ui gera a interface baseada no designer gráfico do Qt Creator. Apenas clique em Next.

Agora você verá o sumário do projeto. Clique em Finish.

Agora você tem uma janela em branco e controles diferentes que você pode arrastar e soltar nela. Você pode adicionar botões, campos de texto, comboboxes, calendários e muito mais. Tente arrastar alguns controles e verificar suas propriedades no lado direito. Você pode apagar qualquer controle apenas selecionando-o e pressionando a tecla Delete.

Vamos criar uma aplicação bem simples, que apenas soma duas números. Em primeiro lugar, precisamos adicionar um Layout. Um Layout ordena os itens da aplicação, e garante que a aparência se adeque a qualquer plataforma. Existem tipos diferentes de layouts: horizontalverticalform e grid. Os layouts  Vertical e horizontal são bem diretos pois representam uma lista de itens em uma direção. Se quiser colocar dois itens por linha, pode usar o layout Form. Esse layout é adequado para alinhar cada um label de texto com seu correspondente campo de texto. Se possuir uma aplicação mais complexa, pode usar o layout Grid que é bem mais flexível. Para a aplicação desse tutorial usaremos o layout Form. Apenas arraste ele para a janela. Um retângulo vermelho deve aparecer.

Agora vamos colocar alguns controles no layout. Estaremos usando três Text Edits, uma para cada número e outro para o resultado da soma. Você pode encontrar eles na categoria Input Widgets. Além disso, estaremos usando dois Labels, encontrados dentro de Display Widgets e um Push Button, encontrado na categoria Buttons. Arraste-os para dentro do retângulo vermelho de modo que fique dessa forma:

Agora vamos configurar cada item. Você pode dar um clique duplo em cada item para alterar o texto ou inserir valores padrão. Se você clicar em um item ele será selecionado, e todas as suas propriedades serão mostradas no lado direito. Selecione cada campo de texto e mude a propriedade objectName para number1number2 e sum respectivamente. Mude a propriedade objectName do botão para sumNumbers. A última coisa que precisa ser feita é ajustar a sizePolicy de cada item. Selecione cada item e em sizePolicy, tanto em horizontal quanto na vertical escolha Expanding. Isso significa que os itens serão expandidos para o tamanho correto em cada dispositivo. Se não ajustar essas propriedades, provavelmente não será capaz de ver os itens em um telefone por causa do tamanho reduzido.

Ok, vamos escrever alguns códigos agora. O que queremos que a aplicação faça é somar number1 e number2 e mostrar o resultado quando o usuário clicar no botão Sum. Uma maneira fácil de acessar o código é dar um clique com o botão direito no botão e selecionar Go To Slot…. Isso abrirá uma caixa de diálogo com todos os slots desse objeto. Estamos interessados no slot Clicked(), então selecione esse slot e clique em Ok. Se você se perguntar do que esse slot se trata,  pense nele como um evento. Se quiser realmente usar o Qt deve ler mais sobre signals e slots.

Ok, agora vamos na aba Edit do Qt Creator (antes estávamos na aba Design). Aqui é onde você pode ver todos os arquivos de código fonte da aplicação. Se selecionou o slot Clicked() no parágrafo anterior, uma função será criada para você. Observe que o nome da função, on_sumNumbers_clicked(), tem o nome do item (sumNumbers) e o slot (clicked()). Essa é a função quené chamada quando o botão de soma é pressionado. Abaixo segue o código dessa função:

void MainWindow::on_sumNumbers_clicked()
{
 //anything from the user interface that we created is inside the ui object.
//first, get the two numbers as ints
 int number1 = ui->number1->text().toInt();
 int number2 = ui->number2->text().toInt();
 //now sum the numbers
 int result = number1 + number2;
 //finally store the result as text in the sum line edit
 ui->sum->setText(QString::number(result));
}


Agora a codificação está concluída; Vamos ver a execução da aplicação no simulador. Certifique-se que o Qt Simulator está selecionado no lado esquerdo, acima do botão de play (em verde). Para roda a aplicação, pressione esse botão. Você deve ver algo como isso:

Observe que esse é o simulador N900. Se você ver um telefone diferente, pode alterar isso na janela do simulador: Na categoria View você verá o campo Device, onde você pode selecionar Maemo Freemantle e o N900 deve aparecer. Agora você pode usar a aplicação, inserir alguns valores e depois clicar em Sum, e o resultado deve aparecer corretamente. Se a aplicação não funcionar de forma adequada nessa etapa, volte ao código e corrija qualquer erro que encontre.

Uma vez que sua aplicação tenha rodado com sucesso no simulador, é hora de compilar para um dispositivo N900 real. Para fazer isso, primeiro feche o simulador. Depois, selecione Maemo acima do botão com o símbolo de play verde. Espere alguns segundos até que os processos de Parsing, Scanning e Evaluating sejam concluídos. Depois disso, vá para Build->Build All. Não pressione  a seta verde  da forma que você fez anteriormente para o simulador. Espere até que o processo de compilação seja finalizado.

Após sua aplicação ter sido compilada com sucesso, existem alguns passos que precisam ser feitos antes de enviar a aplicação para o dispositivo. Primeiro, vá para o diretório onde o projeto foi criado. Você deve ver os arquivos de código fonte assim com a aplicação compilada, myfirstmobileapp_0.0.1_armel.deb, e uma pasta debian. Entre nessa pasta. Nela você encontrará um arquivo chamado control. Precisamos editar esse arquivo. Arraste ele para dentro do Qt Creator (ou use qualquer outro editor de texto). O conteúdo do arquivo deverá ser algo parecido com isso:

Source: myfirstmobileapp
Section: unknown
Priority: extra
Maintainer: unknown <>
Build-Depends: debhelper (>= 5)
Standards-Version: 3.7.3
Homepage: <insert the upstream URL, if relevant>
Package: myfirstmobileapp
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>


O problema está na sentença Section: unknown. Você precisa alterar essa linha para uma seção válida diferente de unknown. Por exemplo, Section: user/development ou Section: user/other ou alguma outra seção válida. Se você não mudar isso, receberá uma mensagem de erro “incompatible application package” quando tentar instalar sua aplicação.

Agora iremos adicionar um ícone para a aplicação. Dentro do diretório Debian, você verá uma pasta com o nome da aplicação, no nosso caso myfirstmobileapp. Entre nessa pasta. Você verá outras duas pastas, DEBIAN e usr. Entra na pasta usr. Existirão outras três pastas: binlocal e sbin. Crie uma nova pasta chamada share. Entre nessa pasta recém-criada e crie duas outras pastas: icons and applications. Dentro da pasta icons, coloque o ícone de sua aplicação, em formato png e tamanho 64×64. Nomeie esse ícone myfirstmobileapp.png ou com o nome de sua aplicação. Você pode usar a imagem abaixo como modelo.

Agora, entre na pasta applications que você criou. Nela, crie uma pasta chamada hildon. Entre nessa pasta e crie um arquivo de texto chamado myfirstmobileapp.desktop com o seguinte conteúdo.

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=myFirstMobileApp
Exec=/usr/local/bin/myFirstMobileApp
Icon=myfirstmobileapp
StartupWMClass=
X-Window-Icon=myfirstmobileapp
X-HildonDesk-ShowInToolbar=true
X-Osso-Type=application/x-executable
Terminal=false


Certifique que você altere myfirstmobileapp pelo nome de sua aplicação. Observe que o arquivo do ícone não precisa ter a extensão PNG. Depois de fazer isso, tudo está pronto. Apague a aplicação (myfirstmobileapp_0.0.1_armel.deb), volte ao Qt Creator e compile a aplicação novamente. Agora a aplicação gerada deve ser instalada sem problemas no dispositivo.

Agora você precisa enviar o arquivo deb da aplicação para seu telefone. Você pode fazer isso facilmente transferindo o arquivo pelo Bluetooth de seu computador. Você pode selecionar o N900 para abrir o arquivo automaticamente assim que a transferência for completada. Isso iniciará o processo de instalação. Além disso, pode usar outros métodos como o cabo USB, ou usar a internet e o navegador web para navegar até o arquivo deb e iniciar o processo de instalação. Isso é tudo que é preciso para instalar uma aplicação no N900.

If you are having problems following this tutorial, or if you just want fast results, you can download my sample project and use it as a template for your applications. This way you can focus more on creating cool applications instead of trying to compile them on the N900.

Traduzido de http://www.samontab.com/web/2011/01/how-to-create-your-first-application-for-the-nokia-n900-using-qt/