我创建了两个gtkmm按钮并添加到HBox对象。我打电话给pack_end,并保持大小为21,20。但是,尺寸不能保持。这是我编写的代码和运行程序时的窗口。
注意:MYWindow是Gtk :: Window
的子类void MYWindow :: 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();
}
答案 0 :(得分:0)
我还不是一名gtk专家(但我正在学习),这是你可以尝试的一件事,这就是我一直在做的事情。 使用林间空地制作一个小型独立项目。 Glade使得所有包装设置变得非常容易,因此您可以立即看到更改的效果。 我认为在调整窗口大小的情况下,你必须保存glade文件并运行程序(使用gtkbuilder渲染glade文件)并手动调整窗口大小以查看效果,但是一旦你创建了独立项目,你可以用它来进行其他gtk测试。 如果你像我一样,你会受到林间空气的影响,并以这种方式构建你的整个系统。
但基本上,这听起来像是一个包装问题,因为我的按钮不能在整个地方调整大小。 至于不动,我不确定你能做到这一点,但我再也不是专家。我认为你应该能够确定一些(如果不是所有的)hbox部分的大小,以便它们内部的按钮不会移动,但我不确定如果你没有任何hbox部件不会发生什么当你长大窗户时,它的大小可以变得松弛。
再次,听起来像在林间空地尝试一些有趣的东西。 : - )
答案 1 :(得分:0)
我认为你收拾错误,也许这就是问题所在:
Gtk::HBox *hBox = new Gtk::HBox(TRUE,0)
我使用python gtk这样的东西:
box1.pack_start(box2,False)