【问题标题】:gtkmm centering widget in Gtk::LayoutGtk::Layout 中的 gtkmm 居中小部件
【发布时间】:2017-03-09 22:25:11
【问题描述】:

我正在尝试创建一个覆盖有图像的全屏窗口,并在窗口中间创建一个条目小部件。

我已经有了带有图像的全屏窗口,但是,我正在努力将输入框准确地定位在窗口的中间。我试过Gtk::AlignmentGtk::VBoxGtk::HBoxGtk::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;
    [...]
};

这是我目前情况的图片:

这是我想要达到的目标:

【问题讨论】:

    标签: c++ gtkmm


    【解决方案1】:

    我建议使用 CSS 而不是 Gtk::Image 创建背景图像。然后,您可以直接将条目放在窗口中,并确保其 expand 属性设置为 false 并且其 halignvalign 属性居中。

    【讨论】:

    • 谢谢,我一定会尝试,但是,我仍然相信它必须以某种方式与 Gtk::Layout 和 Gtk::Image 一起工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-22
    • 2023-03-22
    • 2011-02-21
    • 1970-01-01
    相关资源
    最近更新 更多