【问题标题】:having issue getting widget size in gtkmm在 gtkmm 中获取小部件大小时遇到​​问题
【发布时间】:2017-06-13 04:26:31
【问题描述】:

我有一个带有 openGL 小部件的 gtk::applicationWindow。我想在创建和调整大小时查询 openGL 小部件的大小。这样做是为了补偿纵横比。这是我的代码的 sn-p。问题是当我调整或生成窗口时。 m_glAreaWidth 和 m_glAreaHeight 的值始终为 0。小部件确实会生成并对调整大小做出反应,所以我不明白 get_allocation 如何给出大小为 0 的矩形。

mainWindow::mainWindow(BaseObjectType* cobject ,const Glib::RefPtr<Gtk::Builder>& builder):
        Gtk::ApplicationWindow(cobject),
        m_refGlade(builder),

{

        //add GLArea Widget 
        m_TopLayout->pack_start(m_GLArea);

        m_GLArea.set_auto_render(true);

        signal_size_allocate().connect(sigc::mem_fun(*this, &mainWindow::on_my_size_allocate),false);

        //Makes window fill the whole screen
        maximize();

        show_all();

}
    void mainWindow::on_my_size_allocate(Gtk::Allocation& allocation)
{
        Gtk::Allocation glAreaAlloc = m_GLArea.get_allocation();

        m_glAreaWidth = glAreaAlloc.get_x();
        m_glAreaHeight = glAreaAlloc.get_y();


        m_GLArea.queue_render();


}

【问题讨论】:

    标签: c++11 ubuntu gtk3 gtkmm3


    【解决方案1】:

    我想通了。我刚换了:

        Gtk::Allocation glAreaAlloc = m_GLArea.get_allocation();
    
        m_glAreaWidth = glAreaAlloc.get_x();
        m_glAreaHeight = glAreaAlloc.get_y();
    

        m_glAreaWidth = m_GLArea.get_allocated_width();
        m_glAreaHeight = m_GLArea.get_allocated_height();
    

    仍然不确定为什么这有效,而不是另一个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      • 2014-07-17
      相关资源
      最近更新 更多