2017-03-09 101 views
0

我正在嘗試創建一個全屏窗口,窗口中間覆蓋了一個圖像和一個入口小部件。gtkmm Gtk中的居中小部件::佈局

我已經有圖像的全屏窗口,但是,我正在努力將輸入框完全放置在窗口中間。我試過Gtk::Alignment,Gtk::VBox,Gtk::HBox,Gtk::Table 和許多其他的容器,但說實話,我真的不明白所有的容器他們如何表現。我已經習慣了絕對定位的WIN32 API,這是不同的。我知道我可以在Gtk/gtkmm中使用類似於固定位置的東西,但是,它似乎不是我最乾淨的解決方案。

class App : public Gtk::Window { 
public: 
    [...] 
    App() { 
     fullscreen(); 
     Gdk::Rectangle rec = get_screen()->get_monitor_workarea(get_screen()->get_primary_monitor()); 
     set_default_size(rec.get_width(), rec.get_height()); 
     show(); 

     m_bgImage.set("image.jpg"); 
     m_layout.add(m_bgImage); 

     m_entry.set_size_request(300, 30); 
     m_entry.set_opacity(0.5); 
     m_entry.set_visibility(false); 
     m_entry.signal_activate().connect(sigc::mem_fun(*this, &PadlockGui::onPasswordEntryReturn)); 
     m_entry.set_icon_from_icon_name("edit-clear", Gtk::ENTRY_ICON_SECONDARY); 
     m_entry.signal_icon_press().connect(sigc::mem_fun(*this, &PadlockGui::clearPasswordEntry)); 

     m_layout.add(m_entry); 
     add(m_layout); 

     show_all_children(); 
    } 

private: 
    Gtk::Layout m_layout; 
    Gtk::Image m_bgImage; 
    Gtk::Entry m_entry; 
    [...] 
}; 

這是我目前的狀況照片: enter image description here

這是我想實現: enter image description here

回答

1

我會建議使用CSS而創建的背景圖像比Gtk::Image。然後,您可以直接在窗口中輸入條目,並確保其expand屬性設置爲false,其屬性halignvalign居中。

+0

謝謝,我一定會嘗試,但是,我仍然相信它必須以某種方式與Gtk :: Layout和Gtk :: Image一起工作。 – ProXicT