我是gtkmm的新手,我对打包以及如何扩展小部件感到有些困惑。
这是我写的代码:
#include <gtkmm.h>
class GUIWindow : public Gtk::Window
{
public:
GUIWindow()
{
set_title("title");
set_border_width(10);
set_size_request(800, 600);
add(_box_);
_box_.pack_start(_grid_, true, true, 10);
_grid_.add(_frame1_);
_grid_.add(_frame2_);
_grid_.attach_next_to(_frame3_, _frame1_, Gtk::POS_BOTTOM, 2, 1);
_frame1_.set_label("f1");
_frame2_.set_label("f2");
_frame3_.set_label("f3");
_label1_.set_text("Hello world");
_label2_.set_text("this is an example GUI");
_label3_.set_text("some example text");
_frame1_.add(_label1_);
_frame2_.add(_label2_);
_frame3_.add(_label3_);
show_all_children();
}
private:
Gtk::Box _box_;
Gtk::Grid _grid_;
Gtk::Frame _frame1_;
Gtk::Frame _frame2_;
Gtk::Frame _frame3_;
Gtk::Label _label1_;
Gtk::Label _label2_;
Gtk::Label _label3_;
};
int main(int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
GUIWindow guiwindow;
return app->run(guiwindow);
}
我想在自己的框架中添加3个标签。 (使用框架查看包装的内容。)
我最初在我的窗口添加了一个网格,并用3个框架填充它,每个框架都带有标签。但是,网格没有扩展以填充窗口。所以我尝试将网格放在一个盒子里,但是盒子也没有展开以填充窗口。
我已经在文档和网页上搜索了解决方案,但没有找到解决方案。我想我还不太了解包装是如何运作的。
如何获得&#34; 框&#34;对象填充整个窗口,这样当窗口调整大小时,框也会调整大小,并且框架会随着框格调整大小。 (标签大概不会调整大小。)
答案 0 :(得分:4)
这可能就是你要找的东西
一个例子是:
for (const auto &child : _grid_.get_children()) {
child->set_hexpand(true);
child->set_halign(Gtk::ALIGN_FILL);
child->set_vexpand(true);
child->set_valign(Gtk::ALIGN_FILL);
}