@bigown eu não uso o VS para editar, antigamente o compilador do VS podia ser instalado a parte, mas hoje o VS nos obriga a instalar tudo, até fiz uma pergunta sobre isso no SOen, já te mando o link, eu prefiro muito mais o QTCreator se for pra trabalhar com QT :)
@WallaceMaxters mas o legal é poder fazer o design no editor e usar coisas como QSS para ajustar e assim fica tudo no XML do template, semelhante ao android
@WallaceMaxters faz não, o template/esqueleto é o HTML, o CSS é a roupa ou pele, no maximo que o CSS faz é pseudo-elementos como before ou after
@WallaceMaxters HTML e CSS é algo que discordo de usar editores visuais, exceto para projetar, entre MUSE e um bootstrap da vida, sou 1000x o bootstrap :p
@WallaceMaxters uma janela basica em QT:
#include <QApplication> #include <QWidget>
int main(int argc, char *argv[]) { QApplication a(argc, argv);
@WallaceMaxters é o arquivo do projeto, seria equivalente ao .sln do VisualStudio ou o .env do Laravel (esse ultimo +ou-), é nele que vc declara as suas classes e forms e ainda pode incluir as libs de 3rdparty que vai usar
@WallaceMaxters sim, QT tem HTTP, tanto pra cliente quanto para server, é possivel criar um servidor pequeno que com ele (talvez até avançado), eu fiz um servidor HTTP com C++ puro, acredito que tudo o que eu fiz no QT se resumiria a algumas linhas XD
@WallaceMaxters tirando php e javascript, as outras linguagens eu sou mediano, java eu até que sou um pouquinho melhor, mas coisas prontas como swing, javafx eu nem vou atrás, acabo usando só para android mesmo
@WallaceMaxters não, esse é mais complicado, tem dependencias pra instalar se eu não me engano, tenta isso só para experimentar:
using HttpServer
http = HttpHandler() do req::Request, res::Response
Response( ismatch(r"^/hello/",req.resource) ? string("Hello ", split(req.resource,'/')[3], "!") : 404 )
end
server = Server( http )
run( server, 8000 )
Mas primeiro instala o pacote HttpServer, ae vc cria um arquivo chamado helloworld.jl, roda o ./julia, digita o caminho do teu arquivo se não der erro na URL do browser digita localhost/hello/wallace
@Bacco mas é que eu precisava editar as imagens pelo photoshop, mesmo pela pratica
@WallaceMaxters entendi, mas pegar pra fazer em python só vai parecer melhor, criar as janelas ao menos faça-as no Qtdesign, eu realmente não sei como fazer o uso do pyqt :/
@WallaceMaxters sobre o código (que chuto que é C++) que você viu que tem o `destructor`, o C# inclusive possui a mesma nomeação de método para os `destructors`
@WallaceMaxters só deixa eu explicar uma coisa, no .h vc pode escrever tudo, os metodos e etc, mas ali foi feito semelhante a uma "interface", no .h esta mais ou menos como vai ser a tua classe e no .cpp vc escrever os metodos de verdade, não é obrigatorio fazer assim, todavia acho bem mais organizado
Outra coisa @WallaceMaxters eu não sei se estou correto, o @Bacco sabe mais do que eu, mas presumo que para o C++ (independente do QT) fazer a classe no .h e escrever os metodos no respectitivo .cpp traz alguma vantagem para compilação, quero dizer, talvez depois de compilado ele só use uma lib se a classe foi mesmo declarada, agora se fizer no .h depois de compilado os includes extras farão parte da estrutura, mas eu realmente não entendo muito de coisas mais de baixo nivel
@GuilhermeNascimento se ele fizer pelo editor, vai ser um connect normal. Nao muda muita coisa. Mas eu não uso o editor de GUI, faço sempre via código mesmo.
@Bacco na verdade eu queria explicar slots só depois, queria explicar o porque do .h e .cpp, porque quando vc vem de outras linguagens para o C++ isso confunde muito
@GuilhermeNascimento ah sim, se ele for aprender C++ realmente é bom. Mas pra experimentar o Creator, dá pra fazer bastante coisa sem botar a mão no C++, só pra ele sentir o ambiente. Agora, pra fazer coisa séria, é bom ele aprender a fazer o basico de C++ pra console até.
@Bacco quase tudo eu faço no código, até mesmo os sinais e slots, é tudo na mão mesmo (mesmo tendo aquele gerenciador de "signals"), mas eu gosto muito do "visual", então por isso sempre uso o QtCreator para desenhar as janelas e criar classes+xml vinculadas, mas eventos e o resto é código mesmo :)
@GuilhermeNascimento eu uso o QtDesigner pra rascunho, de vez em quando. O Creator eu nem tenho instalado. Na verdade, da Qt só uso as libs. O MOC e headers só uso quando recompilo o Harbour. Aí é gerada a libhbqt, e são geradas as funções do Harbour que correspondem às da Qt.
@GuilhermeNascimento não, o meu tem coisas que o original não tem, mas muito dele veio pronto. Tenho vontade de escrever certo (tem umas coisas bem feinhas nele) mas precisa de tempo e atenção. A pessoa que pegou o projeto no meio não sabe bem C++, ai fez umas doideiras, e parte da comunidade ajudou. Mas mesmo assim, confio mais que PHP GTK :)
@GuilhermeNascimento Harbour é open source. A HBQt era uma contrib do projeto, mas como nao tava respeitando as guidelines nem padrão de qualidade do resto, foi convidada a ir pra um repo separado. Felizmente algumas pessoas relevantes ajudaram a passar a limpo, mas o gerador automatizado das classes equivalentes precisa ser revisto. Até sei o que tem que ser feito.
@GuilhermeNascimento sim, como qualquer wrapper, é integrar as 2 coisas. No caso Harbour + Qt
Assim como nas contribs do Harbour tem a hbmysql, hbsqlit3, etc
a hbmysql até implementa o uso do mysql do jeito que programador de Clipper gosta, mas eu só uso o core (que é o wrapper seco, com as mesmas funções da lib do mysql).
@Bacco entendo, então é um objetivo de ter algo para Harbour que eles por si só não tem, não é ofendendo, é só pra entender a motivação, raramente usei "wrapper", só testei um ou outro, mas acabava pendendo para "linguagens nativas"
@GuilhermeNascimento o Harbour não tem uma GUI gráfica específica. Tem projetos diversos com várias bibliotecas diferentes, mas a Qt foi a que me convenceu mais. Antes eu usava uma baseada na win32, essa sim eu praticamente refiz inteira na minha versão, mas abandonei depois que vi que a HBQt tava promissora.
@GuilhermeNascimento eu pensei em fazer uma HBGTK, teve um tempo que a Qt era muito primitiva, e foi nessa época que eu estudei a GTK mais a fundo. Mas apesar de eu gostar mais de C do que C++, a Qt amadureceu bem mais rápido, e depois de algumas versões eu comprei a idéia.
@WallaceMaxters uma das coisas mais importantes da Qt é você aprender a usar layouts, em vez de botões travados na tela.
@GuilhermeNascimento a versão Harbour do programa do @WallaceMaxters:
Na primeira, eu chamei um codeblock do Harbour (podia ser qualquer coisa dentro do {|| ... }). Na segunda versão, eu conectei um signal com um slot. Nem passa pelo Harbour o clique na segunda versão. A primeira versão faria sentido se eu quisesse executar uma série de coisas no clique e só depois fechar a janela.
@Bacco eu até que gosto de ObjectPascal, mas eu realmente não curto "classes" nele, por isso to achando esse harbour bem bacana, parece uma coisa bem "objetiva"
@GuilhermeNascimento uma das coisas que eu acho práticas no HB é isso, poucas linhas e ja tem uma aplicação rodando, sem projetos complexos, configuração de ambiente nem nada.
@Bacco cria um serviço só pra dificultar, ou um starter.exe que se replica toda vez que um é fechado e fica checando se o app principal foi fechado hehehe
@GuilhermeNascimento eu fiz um lance bem divertido uma vez. Recortei a foto de um cliente certa vez, numa pose que ele tava inclinado e sorrindo um bocado. Aí eu fiz um timer, que ele entrava da lateral da tela, num intervalo aleatório de 10 a 15 min, com um som de risada. Aí eu instalei isso na maquina do dono da empresa que tava intermediando uns serviços.
O cara ligou xingando, e dava pra ouvir um colega de trabalho rolando de rir ao fundo.
Ai ele me perguntou "como que eu tiro essa m*** daqui!"
Mal sabia ele que a zoeira só tava começando. Eu disse pra ele "é fácil, quando ele entrar na tela, clique nele e aperte alt+f4"
Só que eu calculei o tempo justamente pra ele esquecer, e era aleatório por isso, pra nao ter como medir e esperar.
E a velocidade do treco era pra "quase dar tempo".
A fase 2 da zoeira já tava no projeto :D
E eu pus um timebomb, pq sabia que no dia seguinte ele ia querer mostrar pro cliente final (o dono lá era meio sem noção mesmo). Entao só ia funcionar naquele dia mesmo.
O colega lá quase teve um treco, passou o dia rindo. Ele me contou depois que o cara falava "FDP, da proxima eu pego!" cada vez que o cara entrava na tela e ele errava o clique
@GuilhermeNascimento claro que nao foi totalmente perdido o tempo, foi um exercício de recorte, eu queria ver como fazer janelas não retangulares. Hoje vc pode usar um canal alfa, mas na época eram só regions. Vc tinha que fazer vários retângulos e combinar numa region.
Entao eu fiz um algoritmo pra procurar fazer os maiores retangulos possíveis, para ter menos regions.
A foto era bem irregular, mas tinha várias situações em que se alinhavam alguns pixels na horizontal e vertical, então dava pra aproveitar o mesmo retângulo.
Passei numa simulação de analise e não gostei, descobri que perdi 2 pontos para uma resposta já removida, mesmo a logica sendo essa, são 2 pontos jogados no lixo. :/