【问题标题】:gtkmm button not maintaining size and locationgtkmm 按钮不保持大小和位置
【发布时间】:2011-05-10 15:18:57
【问题描述】:

我创建了两个 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();

}

【问题讨论】:

    标签: gtk


    【解决方案1】:

    我还不是 gtk 专家(但我正在学习),这是您可以尝试的一件事,这就是我一直在做的事情。 使用 glade 制作一个小的独立项目。 Glade 使您可以轻松地使用所有包装设置,因此您可以立即看到更改的效果。 我认为在调整窗口大小的情况下,您必须保存 glade 文件并运行您的程序(使用 gtkbuilder 渲染 glade 文件)并手动调整窗口大小以查看效果,但是一旦您制作了独立项目,您可以将其用于其他 gtk 测试。 如果你像我一样,就会被林间空地的美妙所动摇,并以这种方式构建你的整个系统。

    但基本上,这听起来像是一个包装问题,因为我的按钮不会到处调整大小。 至于不动,我不确定你能做到这一点,但我又不是专家。我认为您应该能够固定一些(如果不是全部)hbox 块的大小,以便它们内部的按钮不会移动,但我不确定如果您没有任何不能移动的 hbox 部分会发生什么尺寸可变,以便在您扩大窗户时填补空缺。

    再次,听起来像是在林间空地尝试一些有趣的事情。 :-)

    【讨论】:

      【解决方案2】:

      我认为你打包为 FALSE,也许这就是问题所在:

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

      我将 python gtk 与这样的东西一起使用:

      box1.pack_start(box2,False)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多