Autor Tópico: [Resolvido] Problema com a função set_resizable() C++ e Gtkmm.  (Lida 2305 vezes)

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
[Resolvido] Problema com a função set_resizable() C++ e Gtkmm.
« Online: 28 de Janeiro de 2008, 22:39 »
Se eu defino a janela como set_resizable(false), ela abre encolhida e não consigo ver nada.

Segue o código:

Código: [Selecionar]
#include <gtkmm/window.h>
#include <gtkmm/main.h>
#include <gtkmm/layout.h>
#include <gtkmm/button.h>
#include <gtkmm/box.h>
#include <gtkmm/buttonbox.h>
#include <gtkmm/label.h>

class Janela : public Gtk::Window{

public:

 Janela() :
 layout(),
 adicionar("Adicionar"),
 remover("Remover"),
 pesquisar("Pesquisar"),
 sobre("Sobre"),
 cvbotao(Gtk::BUTTONBOX_START, 10),
 label("bla bla bla bla"),
 caixa(){

  Gtk::Window::set_size(500,300);
  Gtk::Window::set_resizable(false);
  Gtk::Window::set_title("Receitas Vegetarianas");
  add(caixa);
  caixa.pack_start(layout);
  caixa.pack_end(label);
  cvbotao.add(pesquisar);
  cvbotao.add(adicionar);
  cvbotao.add(remover);
  cvbotao.add(sobre);
  layout.put(cvbotao,30,140);
  layout.show();
  label.show();
  cvbotao.show();
  adicionar.show();
  remover.show();
  pesquisar.show();
  sobre.show();
  caixa.show();

 }

 ~Janela(){
 }

protected:

 Gtk::Button adicionar;
 Gtk::Button remover;
 Gtk::Button pesquisar;
 Gtk::Button sobre;
 Gtk::Layout layout;
 Gtk::VButtonBox cvbotao;
 Gtk::Label label;
 Gtk::HBox caixa;

};

int main(int argc, char * argv[]){

 Gtk::Main kit(argc, argv);

 Janela janela;
 Gtk::Main::run(janela);

}

compilar com:
Código: [Selecionar]
g++ main.cc -o main `pkg-config gtkmm-2.4 --cflags --libs`
« Última modificação: 28 de Janeiro de 2008, 23:34 por solanoalves »

Darcamo

  • Visitante
Re: Problema com a função set_resizable() C++ e Gtkmm.
« Resposta #1 Online: 28 de Janeiro de 2008, 23:29 »
Aqui precisei comentar a função
Código: [Selecionar]
Gtk::Window::set_size(500,300);porque set_size não faz parte da classe Gtk::Window.
Com isso compilou normal.

Ao rodar o programa, a janela tinha dimensões suficientes apenas para exibir o label "bla bla bla bla". É como se só o label estivesse "solicitando espaço na janela.
Se eu comentar o label a janela terá dimenões quase que nulas (quase uma linha vertical).

Na impede que você especifique um tamanho desejado para a janela. Acredito que a função que você gostaria de usar é set_size_request.
Por exemplo, usando
Código: [Selecionar]
Gtk::Window::set_size_request(400,350);a janela tem espaço para exibir tudo: o label e os botões.

Fazer a interface direto no código é interessante, mas dá uma olhada também no glade que as coisas ficam bem mais fáceis com ele.

Offline solanoalves

  • Usuário Ubuntu
  • *
  • Mensagens: 398
  • Arch Linux
    • Ver perfil
Re: Problema com a função set_resizable() C++ e Gtkmm.
« Resposta #2 Online: 28 de Janeiro de 2008, 23:34 »
Valeu cara!!!...deu certo!!

Eu tenho o glade aqui, mas prefiro fazer a mão enquanto eu conseguir hehehe