gtkmm 获取小部件的大小
Posted
技术标签:
【中文标题】gtkmm 获取小部件的大小【英文标题】:gtkmm get size of widget 【发布时间】:2017-12-26 09:03:24 【问题描述】:我只是想知道小部件的尺寸。如果小部件的大小大于屏幕,我需要此信息将 ScrolledWindow 设置为最大大小。
但我知道的所有函数都给出一个常数值 1。
#include <iostream>
#include <gtkmm.h>
#include <gtkmm/window.h>
class ExampleWindow: public Gtk::Window
Gtk::Button button;
public:
ExampleWindow(): button("Hallo")
add(button);
GetSize();
void GetSize()
std::cout << button.get_width() << " " << button.get_height() << std::endl;
std::cout << button.get_allocated_width() << " " << button.get_allocated_height() << std::endl;
;
int main(int argc, char* argv[])
Gtk::Main kit(argc, argv);
ExampleWindow window;
window.GetSize();
window.show_all_children();
window.GetSize();
Gtk::Main::run(window);
return 0;
【问题讨论】:
附注,如果对您有用的话:#include<gtkmm.h>
已经处理了#include<gtkmm/window.h>
。
【参考方案1】:
这看起来很像this answer。
基本上它说在get_height()
和get_width()
方法返回有意义的值之前,小部件必须实现。由于您在窗口构造函数中调用这些(通过您的GetSize()
包装器),它(窗口内的按钮)可能尚未实现,因此值错误。
奖金
根据this ticket:
实现意味着为小部件创建 GDK 资源。即 在显示屏上实例化小部件。
另外,为了澄清realize这个词的含义,请参阅this。作者似乎对该主题进行了一些有趣的研究以澄清文档。
【讨论】:
以上是关于gtkmm 获取小部件的大小的主要内容,如果未能解决你的问题,请参考以下文章
GTKMM/C++11:如何从其他小部件中创建自定义复合小部件?
GTKmm - 无法将固定大小设置为 Gtk::Scale 小部件