我是 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);
}
Run Code Online (Sandbox Code Playgroud)
我想添加 3 个标签,每个标签都在自己的框架内。(使用框架查看包装情况。)
我最初在我的窗口中添加了一个网格,并用 3 个框架填充它,并用标签填充每个框架。但是,网格没有扩展以填充窗口。所以我试着把网格放在一个盒子里,但盒子也没有扩展到填充窗口。
我在文档和网络上搜索了解决方案,但没有找到。我想我只是不太明白包装是如何工作的。
如何让“框”对象填充整个窗口,以便在窗口调整大小时框也会调整大小,并且框架会随着与框一起调整大小的网格调整大小。(标签大概不会调整大小。)
小智 5
这可能就是你要找的
一个例子是:
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);
}
Run Code Online (Sandbox Code Playgroud)