gtkmm按钮不保持大小和位置

时间:2010-11-16 05:23:58

标签: gtk

我创建了两个gtkmm按钮并添加到HBox对象。我打电话给pack_end,并保持大小为21,20。但是,尺寸不能保持。这是我编写的代码和运行程序时的窗口。

alt text

注意: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();

}

2 个答案:

答案 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)