前言
- 在之前的打包测试中我提到了需要一个挑选dll的程序
- 于是我打算用Gtk来制作这个程序
预览

细节要点
初始窗口尺寸
- 只有主窗口有set_default_size()方法, 控件没有这个方法
- 我发现Gtk的初始窗口大小和最小窗口大小限制 集合在同一个方法内:
set_size_request() - 这就有问题了, 我需要程序(控件)一开始呈现足够可观的尺寸, 但不是最小只能是这个尺寸, 我希望后续能够调小
- 于是我发现了size_allocate_vfunc这个虚函数,
只要有窗口尺寸发生变化的事件一触发就会调用这个函数
我们可override一下主窗口的这个虚函数, 在里面做你需要做的事
那么上面的问题我只需再次set_size_request()便可解决 - std::call_once函数可帮助我在整个程序生命期里只执行一次,虽然自己写一个bool判断也可以达成目的, 但std::call_once更方便可观, 而且用了mutex, 是线程安全的
void size_allocate_vfunc(int width, int height, int baseline)override { std::cout << width << " " << height << " " << baseline << " " << std::endl; Gtk::Widget::size_allocate_vfunc(width, height, baseline); m_pMainPaned->set_position(width - 100);//设置第二个Paned的滑动柄位置 m_pSubPaned->set_position(100);//设置第一个Paned的滑动柄位置 std::call_once(onceFlag, [this] { m_pMBox->set_size_request
6129



被折叠的 条评论
为什么被折叠?



