Como funciona o desenvolvimento de interfaces gráficas no C++?  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
matheuslmota
Virtual Machine Man

Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline

Bom dia a todos. Estava estudando C++ por esses dias e li que o C++ padrão não possui suporte à interface gráfica. Usa-se alguma biblioteca que interaja com o sistema de janelas do Sistema Operacional. Mas o sistema de janelas do sistema operacional é feito em que linguagem? Alguém poderia me explicar como isso tudo funciona? Eu não entendi direito. Tipo, temos o framework QT, que além de MVC e outras coisas ele também tem a parte gráfica. Mas isso são somente chamadas ao sistema de janelas?

Toda vez que você alimenta um troll uma foca morre no Polo Norte.
[MSN]
otaviojava
GUJ Master
[Avatar]

Membro desde: 14/12/2010 10:09:09
Mensagens: 1192
Localização: Salvador,Bahia
Offline

No linux você tem dois famosos frameworks.
QT framework usado pelo pessoal do kde
GTK framework usado pelo pessoal do gnome

twitter- https://twitter.com/otaviojava
java -http://home.java.net/blogs/otaviojava
blog - http://otaviosantana.blogspot.com/
javabahia - http://javabahia.blogspot.com/
linguagil - http://javabahia.blogspot.com/
Desenvolva aplicações com Cassandra de uma maneira mais fácil com o EasyCassanra: https://github.com/otaviojava/Easy-Cassandra

[WWW]
matheuslmota
Virtual Machine Man

Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline

Pois é, mas a minha dúvida é com relação à como isso funciona. Eu Desenvolvo uma aplicação com o QT. A parte gráfica o QT chama do sistema operacional????????? Eu não estou entendendo.

Toda vez que você alimenta um troll uma foca morre no Polo Norte.
[MSN]
otaviojava
GUJ Master
[Avatar]

Membro desde: 14/12/2010 10:09:09
Mensagens: 1192
Localização: Salvador,Bahia
Offline

matheuslmota wrote:Pois é, mas a minha dúvida é com relação à como isso funciona. Eu Desenvolvo uma aplicação com o QT. A parte gráfica o QT chama do sistema operacional????????? Eu não estou entendendo.


Você precisa ter o qt instalado no Sistema operacional.
No caso da interface KDE isso já vem nativo e nos outros so vc vai precisar instalar as libs.
Além de compilar para cada arquitetura e cada SO.

twitter- https://twitter.com/otaviojava
java -http://home.java.net/blogs/otaviojava
blog - http://otaviosantana.blogspot.com/
javabahia - http://javabahia.blogspot.com/
linguagil - http://javabahia.blogspot.com/
Desenvolva aplicações com Cassandra de uma maneira mais fácil com o EasyCassanra: https://github.com/otaviojava/Easy-Cassandra

[WWW]
matheuslmota
Virtual Machine Man

Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline

Mas no final das contas, essa interface gráfica é implementada em que linguagem? A minha dúvida mesmo é: o QT chama o sistema de janelas do windows (ou do linux, ou de outro S.O.). Mas como tal sistema é implementando? É em que linguagem? E você saberia informar o porquê de o C++ não ter suporte nativo à inteferace gráfica?

This message was edited 1 time. Last update was at 28/06/2011 07:41:07


Toda vez que você alimenta um troll uma foca morre no Polo Norte.
[MSN]
quikkoo
JavaEvangelist
[Avatar]

Membro desde: 30/10/2006 21:10:14
Mensagens: 406
Localização: minas
Offline

a linguagem usada no qt é c++, o gtk usa-se o c, mas exite um 'wrapper' para c++ chamado gtkmm

matheuslmota wrote:li que o C++ padrão não possui suporte à interface gráfica

aqui há uma confusão, talvez oq vc leu, ou oq quizeram informar, é q em c e em c++ ñ são distribuidas bibliotecas nativas para widgets, mas isso é uma caracteristica da linguagem, oq ñ impede ninguem de escrever uma, até mesmo as funções básicas de entrada e saída estão em bibliotecas

flw,.t+

the_book->is_on(the_table);
matheuslmota
Virtual Machine Man

Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline

quikkoo wrote:a linguagem usada no qt é c++, o gtk usa-se o c, mas exite um 'wrapper' para c++ chamado gtkmm

matheuslmota wrote:li que o C++ padrão não possui suporte à interface gráfica

aqui há uma confusão, talvez oq vc leu, ou oq quizeram informar, é q em c e em c++ ñ são distribuidas bibliotecas nativas para widgets, mas isso é uma caracteristica da linguagem, oq ñ impede ninguem de escrever uma, até mesmo as funções básicas de entrada e saída estão em bibliotecas

flw,.t+

Agora você chegou onde eu queria. Então quer dizer que eu posso escrever uma biblioteca em C++ para interface gráfica? O que queriam dizer é que apenas o C++ não tem uma biblioteca padrão para tal, isso? Grato a todos pela atenção.

Toda vez que você alimenta um troll uma foca morre no Polo Norte.
[MSN]
RafaelViana
GUJ Master

Membro desde: 23/03/2008 18:56:02
Mensagens: 1257
Localização: Venâncio Aires/RS
Offline

Matheus,

Para um trabalho da faculdade desenvolvi uma aplicação simples usando QT. Se lhe interessar posso mandar o código para o seu email.

Mande seu email por MP.

Rafael Rodrigues Viana
Estudando Java e Flex
Blog: http://www.cauirs.com.br/rafael/

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
[Email] [MSN]
DanielGimenes
Thread.start()
[Avatar]

Membro desde: 28/01/2010 13:40:04
Mensagens: 48
Localização: São Paulo
Offline

Matheus,

Sim! As classes do QT utilizam a API do sistema operacional que já possui widgets, ao menos no windows. Você pode perfeitamente criar os seus widgets, porém para colocá-los na tela, você precisa interagir com a API do sistema operacional. Então, mesmo em casos como o Firefox, que renderiza a página desenhando os componentes e tal, ele tem um widget que é o componente onde a página é mostrada, que é registrada no Windows.

E isso é bom, afinal, você centraliza o código de desenho de janelas e componentes em um só lugar e permite o gerenciamento de tal para todos os aplicativos de uma só forma. Exemplo: se todos os programas usarem a API do SO para desenhar os componentes, é possível que se aplique temas que afetam todos os programas ao mesmo tempo.

Agora falando de C++: na espec da linguagem não existe uma api para criação de interfaces gráficas (GUI). Porém existem as famosas e mais utilizadas, que atualmente são o QT e o GTK+ (ambas multiplataforma). Antigamente se usava também o MFC e o da Borland (não lembro o nome), para Windows. Que eu saiba, o QT no Windows utiliza a API do SO para criar os componentes, exceto aqueles que não existem no SO, para aproveitar a parte de temas, etc. No Linux (KDE), como o QT é a base para todos os aplicativos, este renderiza os componentes, sendo que inclusive é mais integrado ao SO. É possível ver isso ao instalar o Firefox (GTK+) no KDE e tentar salvar um arquivo. Você verá que o diálogo que for aberto não terá o tema dos outros aplicativos, nem o diretório padrão e os atalhos. Isso porque no KDE é o QT que trata isso. O mesmo ocorre no Gnome com o GTK+.

Tipo, temos o framework QT, que além de MVC e outras coisas ele também tem a parte gráfica. Mas isso são somente chamadas ao sistema de janelas?


Não são simples chamadas ao sistema, pois ele expõe a parte de signals e slots, que é uma forma de IPC bem bacana. Além disso, existem diversos widgets que o SO não possui, e esses são desenhados pelo QT (e registrados no Windows, no caso, como Janelas).

Agora... por que vc perguntou isso? Apenas curiosidade? :]

[[]]'s
[Email]
matheuslmota
Virtual Machine Man

Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline

RafaelViana wrote:Matheus,

Para um trabalho da faculdade desenvolvi uma aplicação simples usando QT. Se lhe interessar posso mandar o código para o seu email.

Mande seu email por MP.

Mandei pra ti agora um MP.

Toda vez que você alimenta um troll uma foca morre no Polo Norte.
[MSN]
matheuslmota
Virtual Machine Man

Membro desde: 09/03/2010 15:14:56
Mensagens: 664
Offline

DanielGimenes wrote:Matheus,

Sim! As classes do QT utilizam a API do sistema operacional que já possui widgets, ao menos no windows. Você pode perfeitamente criar os seus widgets, porém para colocá-los na tela, você precisa interagir com a API do sistema operacional. Então, mesmo em casos como o Firefox, que renderiza a página desenhando os componentes e tal, ele tem um widget que é o componente onde a página é mostrada, que é registrada no Windows.

E isso é bom, afinal, você centraliza o código de desenho de janelas e componentes em um só lugar e permite o gerenciamento de tal para todos os aplicativos de uma só forma. Exemplo: se todos os programas usarem a API do SO para desenhar os componentes, é possível que se aplique temas que afetam todos os programas ao mesmo tempo.

Agora falando de C++: na espec da linguagem não existe uma api para criação de interfaces gráficas (GUI). Porém existem as famosas e mais utilizadas, que atualmente são o QT e o GTK+ (ambas multiplataforma). Antigamente se usava também o MFC e o da Borland (não lembro o nome), para Windows. Que eu saiba, o QT no Windows utiliza a API do SO para criar os componentes, exceto aqueles que não existem no SO, para aproveitar a parte de temas, etc. No Linux (KDE), como o QT é a base para todos os aplicativos, este renderiza os componentes, sendo que inclusive é mais integrado ao SO. É possível ver isso ao instalar o Firefox (GTK+) no KDE e tentar salvar um arquivo. Você verá que o diálogo que for aberto não terá o tema dos outros aplicativos, nem o diretório padrão e os atalhos. Isso porque no KDE é o QT que trata isso. O mesmo ocorre no Gnome com o GTK+.

Tipo, temos o framework QT, que além de MVC e outras coisas ele também tem a parte gráfica. Mas isso são somente chamadas ao sistema de janelas?


Não são simples chamadas ao sistema, pois ele expõe a parte de signals e slots, que é uma forma de IPC bem bacana. Além disso, existem diversos widgets que o SO não possui, e esses são desenhados pelo QT (e registrados no Windows, no caso, como Janelas).

Agora... por que vc perguntou isso? Apenas curiosidade? :]

[[]]'s


Obrigaod pela respostoa. Eu pesquisei sobre isso através de outras fontes e só completando o que você disse. A aplicação usa um determinado framwork para desenvolver uma interface gráfica. Vamos pegar o QT como exemplo. Quando eu coloco uma janela na minha aplicação, o QT chama essa janela do sistema operacional. O sistema operacional por sua vez tem uma série de componentes implementados, como dialogs, buttons, showmessages etc. Tais componentes são escritos em C usando API's de desenho. Esses componentes são disponibiliados pelo windows sob a forma de DLL's (a implementação não é mostrada, mas segue esse esse esquema que eu acabei de falar).
Eu perguntei apenas por curiosidade mesmo.

Toda vez que você alimenta um troll uma foca morre no Polo Norte.
[MSN]
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team