2015-01-31 2 views
0

Я хочу, чтобы моя панель инструментов находилась в верхней части окна, а не вертикально расширялась, и я хочу, чтобы запись расширялась горизонтально. Вот код:gtkmm, как установить панель инструментов?

main.cc

// g++ test2.cc `pkg-config gtkmm-3.0 --libs --cflags` -std=c++11 
#include <gtkmm.h> 

int main(int argc, char **argv) 
{ 
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create("My.ToolBar.Drive.Me.Crazy"); 

    /*window*/ 
    Gtk::Window * W1 = new Gtk::Window(); 
    W1->set_default_size(800, 600); 

    /*box*/ 
    Gtk::Box * X1 = new Gtk::Box(Gtk::Orientation::ORIENTATION_VERTICAL); 

    /*toolbar*/ 
    Gtk::Toolbar * T1 = new Gtk::Toolbar(); 

    /*button*/ 
    Gtk::ToolButton * B1 = new Gtk::ToolButton(Gtk::Stock::GO_BACK); 

    /*button*/ 
    Gtk::ToolButton * B2 = new Gtk::ToolButton(Gtk::Stock::GO_FORWARD); 

    /*tool item for the entry*/ 
    Gtk::ToolItem * I1 = new Gtk::ToolItem(); 

    /*entry*/ 
    Gtk::Entry * E1 = new Gtk::Entry(); 

    /*button*/ 
    Gtk::ToolButton * B3 = new Gtk::ToolButton(Gtk::Stock::GO_BACK); 


    T1->append(*B1); 
    T1->append(*B2); 
    T1->append(*I1); 
    T1->append(*B3); 

    I1->add(*E1); 

    X1->pack_start(*T1, true, true); 

    W1->add(*X1); 

    W1->show_all(); 

    app->run(* W1); 

    delete B1; 
    delete B2; 
    delete B3; 
    delete I1; 
    delete E1; 
    delete X1; 
    delete W1; 
} 

Я не понимаю, в чем разница между расшириться и заполнить, есть две функции, set_hexpand() и set_vexpand() все, что я пытался (последние два часа) с этими функциями я всегда получаю тот же результат, что и с кодом выше.

ответ

0

1.- Для X1 установите разворот на значение false.
2.- Сделайте свой инструментальный инструмент также расширяемым.
3.- Добавить расширитель к X1.

// c++ main.cpp -std=c++11 `pkg-config gtkmm-3.0 --libs --cflags` 
#include <gtkmm.h> 

int main(int argc, char **argv) { 
    Glib::RefPtr<Gtk::Application> app = Gtk::Application::create("My.ToolBar.Drive.Me.Crazy"); 
    /*window*/ 
    Gtk::Window * W1 = new Gtk::Window(); 
    W1->set_border_width (10); 

    /*box*/ 
    Gtk::Box * X1 = new Gtk::Box(Gtk::ORIENTATION_VERTICAL); 

    /*toolbar*/ 
    Gtk::Toolbar * T1 = new Gtk::Toolbar(); 

    /*button*/ 
    Gtk::ToolButton * B1 = new Gtk::ToolButton(Gtk::Stock::GO_BACK); 

    /*button*/ 
    Gtk::ToolButton * B2 = new Gtk::ToolButton(Gtk::Stock::GO_FORWARD); 

    /*tool item for the entry*/ 
    Gtk::ToolItem * I1 = new Gtk::ToolItem(); 
    I1->set_expand(); // true is default 

    /*entry*/ 
    Gtk::Entry * E1 = new Gtk::Entry(); 

    /*button*/ 
    Gtk::ToolButton * B3 = new Gtk::ToolButton(Gtk::Stock::GO_BACK); 

    /* vertical expander for the window */ 
    Gtk::Box *expander = Gtk::manage (new Gtk::Box (Gtk::Orientation::ORIENTATION_VERTICAL)); 

    T1->append(*B1); 
    T1->append(*B2); 
    I1->add (*E1); 
    T1->append(*I1); 
    T1->append(*B3); 



    X1->pack_start(*T1, false, true); 
    X1->pack_start(*expander, true, true); 

    W1->add(*X1); 

    W1->show_all(); 

    app->run(* W1); 

    delete B1; 
    delete B2; 
    delete B3; 
    delete I1; 
    delete E1; 
    delete X1; 
    delete W1; 
} 
+0

Hi Joel, thx для вашего ответа! sry для моей латентности, некоторые личные проблемы ... Во всяком случае, я снова в бизнесе, и ваш ответ все хорошо! –

+0

Рад, что это вам поможет :) – Joel

Смежные вопросы