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?
Como funciona o desenvolvimento de interfaces gráficas no C++?
10 Respostas
No linux você tem dois famosos frameworks.
QT framework usado pelo pessoal do kde
GTK framework usado pelo pessoal do gnome
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.
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?
a linguagem usada no qt é c++, o gtk usa-se o c, mas exite um ‘wrapper’ para c++ chamado gtkmm
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+
a linguagem usada no qt é c++, o gtk usa-se o c, mas exite um ‘wrapper’ para c++ chamado gtkmmaqui 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.
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.
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+.
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
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.
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+.
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.