User:Catarino

From Qt Wiki
Jump to: navigation, search

Qt for Windows

Dicas (Grupo Qt Brasil)

Qual a diferença do Instalador Oficial entre o online/offline?

R = Obviamente o on necessita de internet durante a instalação do início ao fim. E o off necessita de um teste de conexão durante a tela de login do instalador, mas a instalação em si é offline.



Qual a diferença entre o compilador do VS2015(v140) e VS2017(v141)? E porquê tem os dois?

R = Além do v141 ser mais atualizado como, por exemplo, o uso do C++17. O que difere na prática é que o v141 lhe permite usar a API WinRT, ou seja, você pode desenvolver aplicações no Qt ao estilo UWP (x86/x64) usado no Windows 8/8.1/10 e também o clássico estilo Win32 (x64 only) {não me refiro a plataforma x86 nesse caso, mas sim a outra API do Windows NT }, porém o v140 somente no estilo WinNT (x86/x64). Se você estiver usando esta opção não esqueça de instalar o WinSDK, no caso do Windows 10 instale duplamente a versão build inicial v10.240 e a versão atual do mesmo. Pois o inicial tem o depurador “cdb.exe” quanto os mais recentes não o acrescentam e consequentemente o Qt Creator não detecta.



E o MinGW [Minimal GNU for Windows]?

R = O instalador oficial lhe permite baixar usando uma versão obsoleta e no qual não lhe impede de aprender, mas também não te ajuda em relação as libraries (*.dll, *.a). Já que a Microsoft foca qualquer desenvolvimento de aplicação no Windows seja usado o MSVC , no caso posso citar aqui o package manager (vcpkg) que baixa o código fonte e compila usando MSVC. Mas para MinGW temos como alternativa mais moderna o Msys2 , no qual você na maioria das vezes não precisa compilar nada, pois já vem compilado e ele lembra muito a distro ArchLinux usando o pacman. Então se no caso mais comum de projeto, ex.:

  • Criar uma aplicação de Banco de Dados usando Mysql, Sqlite, Postgresql e Firebird.

Você pode baixar o Qt(x86/x64) usando o terminal do Msys2 e poderá também baixar de forma opcional as libraries adicionais no caso do plugin pgsql e fbsql.

Depend. opcionais    : mingw-w64-(i686 ou x86_64)-libmariadbclient
                       mingw-w64-(i686 ou x86_64)-firebird2
                       mingw-w64-(i686 ou x86_64)-postgresql

PS: compile seu projeto no modo release para funcionar com estas dependências!!!

PS: Existem duas builds para baixar que são static e tradicionalmente dynamic. Porém se quiser fazer uma aplicação como do exemplo acima na build static , terá problemas para compilar, ou terá de fazê-lo manualmente recompilando a build com a source do plugin necessário.

Para mais informações sobre MSYS2 for Qt WinDev



Como fazer deploy no Windows?

R = Simples, quando você instala o Qt pelo instalador oficial MinGW/MSVC ele mostra junto aos ícones {QtCreator, Designer, Assistant} um console tendo como parâmetro o diretório do Qt no qual pode procurar a pasta do seu projeto usando o cmd. Já no Msys2 você terá que abrir o terminal dele usando como parâmetro o tipo plataforma que deseja utilizar (MinGW32/64), ou simplesmente acrescentar no próprio projeto desta forma, Ex.:

  • Abra o arquivo.pro e coloque:
isEmpty(TARGET_EXT) {
    win32 {
        TARGET_CUSTOM_EXT = .exe
} else {
    TARGET_CUSTOM_EXT = $${TARGET_EXT}
}

win32 {
    DEPLOY_COMMAND = windeployqt
}

CONFIG( debug, debug|release ) {
    # debug
    DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/debug/$${TARGET}$${TARGET_CUSTOM_EXT}))
} else {
    # release
    DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/release/$${TARGET}$${TARGET_CUSTOM_EXT}))
}

# Use += ao invés do = se for usar multiplos QMAKE_POST_LINKs
QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_TARGET}

PS: Quando se trata de library externo como libSql, entre outros. Você colocará manualmente na pasta do seu Executável(Modo: Release) e não do Projeto source. Se você for usar MSVC não esqueçam de acrescentar na pasta do Executável o vcredist(da mesma plataforma da build), então se for usar um instalador (InnoSetup, NSIS, Advanced Installer, Qt Installer Framework) terá todas as dependências necessárias inclusas.