кнопка gtkmm не поддерживает размер и местоположение - PullRequest
0 голосов
/ 16 ноября 2010

Я создал две кнопки gtkmm и добавил к объекту HBox.Я позвонил pack_end и сохранил размер 21,20.Но размеры не поддерживаются.Вот код, который я написал, и окно, которое я получил при запуске программы.

alt text

Примечание: MYWindow является подклассом Gtk :: Window

voidMYWindow :: customizeTitleBar () {// создать вертикальное поле Gtk :: VBox * vBox = new Gtk :: VBox (FALSE, 0);

//create a horizontal box
Gtk::HBox *hBox = new Gtk::HBox(TRUE,0);
hBox->set_border_width(5);

//create title bar image
Gtk::Image *titleBarImage = new Gtk::Image("src/WindowTitleBar.png");
titleBarImage->set_alignment(Gtk::ALIGN_LEFT);

// hBox-> pack_start (* titleBarImage,Gtk :: PACK_EXPAND_WIDGET, 0);

//create cloze button for window
mButtonClose = new Gtk::Button;
(*mButtonClose).set_size_request(21,20);
Gtk::Image *mImage =  new Gtk::Image("src/Maximize.jpeg");
(*mButtonClose).add(*mImage);
(*mButtonClose).set_image_position(Gtk::POS_TOP);

// connecting close window function when cliked on close button 
//(*mButtonClose).signal_clicked().connect( sigc::mem_fun(this, &MYWindow::closeWindow));

hBox->pack_end(*mButtonClose,Gtk::PACK_EXPAND_WIDGET,0);
Gtk::Button * mBtton = new Gtk::Button;
mBtton->set_size_request(21,20);
Gtk::Image *img =  new Gtk::Image("src/Maximize.jpeg");
mBtton->add(*img);
mBtton->set_image_position(Gtk::POS_TOP);

hBox->pack_end(*mBtton,Gtk::PACK_EXPAND_WIDGET,0);

vBox->add(*hBox);

//drawing area box
Gtk::HBox *hBoxDrawingArea = new Gtk::HBox;

Gtk::DrawingArea *mDrawingArea = new Gtk::DrawingArea;

hBoxDrawingArea->pack_start(*mDrawingArea,Gtk::PACK_EXPAND_WIDGET,0);

vBox->add(*hBoxDrawingArea);

//status bar hBox
Gtk::HBox *hBoxStatusBar = new Gtk::HBox;

vBox->add(*hBoxStatusBar);

this->add(*vBox);

this->show_all();

}

Ответы [ 2 ]

0 голосов
/ 15 июля 2013

Я думаю, что вы упакуете в ЛОЖЬ, Может быть, это проблема:

Gtk::HBox *hBox = new Gtk::HBox(TRUE,0)

Я использую Python GTK с чем-то вроде этого:

box1.pack_start(box2,False)
0 голосов
/ 19 ноября 2010

Я еще не эксперт по gtk (но я учусь), вот одну вещь, которую вы можете попробовать, это то, что я делал.Сделайте небольшой автономный проект с использованием поляны.Glade позволяет легко обойти все настройки упаковки, чтобы вы могли сразу увидеть результаты ваших изменений.Я думаю, что в случае изменения размера окна вам придется сохранить файл glade и запустить вашу программу (используя gtkbuilder для рендеринга файла glade) и вручную изменить размер окна, чтобы увидеть эффект, но как только вы создадите отдельный проект,Вы можете использовать его для другого тестирования GTK.И если вы похожи на меня, вас поразит чудо, которое полян, и вы построите всю свою систему таким образом.

Но в основном это звучит как проблема с упаковкой, потому что у меня есть кнопки, которыене меняйте размеры повсюду.Что касается не двигаться, я не уверен, что вы можете сделать это, но опять же я не эксперт.Я думаю, вы должны иметь возможность прикрепить размер некоторых, если не всех частей hbox, чтобы кнопка внутри них не двигалась, но я не уверен, что произойдет, если у вас нет частей hbox, которые не могутбыть разного размера, чтобы справиться с провисанием при выращивании окна.

Опять же, звучит как что-то забавное, чтобы попробовать на поляне.: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...