【问题标题】:gtkmm get size of widgetgtkmm 获取小部件的大小
【发布时间】: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&lt;gtkmm.h&gt; 已经处理了#include&lt;gtkmm/window.h&gt;

标签: c++ widget gtkmm


【解决方案1】:

这看起来很像this answer

基本上它说在get_height()get_width() 方法返回有意义的值之前,小部件必须实现。由于您在窗口构造函数中调用这些(通过您的GetSize() 包装器),它(窗口内的按钮)可能尚未实现,因此值错误。


奖金

根据this ticket

实现意味着为小部件创建 GDK 资源。即 在显示屏上实例化小部件。

另外,为了澄清realize这个词的含义,请参阅this。作者似乎对该主题进行了一些有趣的研究以澄清文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    • 2021-09-10
    • 2019-07-11
    • 2021-06-15
    • 2021-10-01
    • 1970-01-01
    相关资源
    最近更新 更多