gpt4 book ai didi

c++ - 在构造函数中访问容器子小部件维度

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:54 25 4
gpt4 key购买 nike

假设我有一个包含两个 Gtk::Containers 的类,如下所示:

class Example : public Gtk::VBox
{
public:
Example();
virtual ~Example();

private:
Gtk::HBox m_c1; // First container
Gtk::Grid m_c2; // Second container
};

构造一个Example是这样实现的:

Example::Example()
{
const int nbRows{6};
const int nbColumns{7};

for(int col{0}; col < nbColumns; ++col)
{
Gtk::Button* btn {new Gtk::Button("A")};

m_c1.pack_start(*btn);
}

for(int row{0}; row < nbRows; ++row)
{
for(int col{0}; col < nbColumns; ++col)
{
Gtk::Button* btn {new Gtk::Button("A")};

m_c2.attach(*btn, col, row, 1, 1);
}
}

// Layout setup:
pack_start(m_c1);
pack_start(m_c2);

show_all();
}

我想做的是确保m_c2中的子控件与m_c1中的子控件大小相同,以确保两个容器之间的视觉一致性.否则,它看起来像这样:

Inconsistent sizes

只是为了确定,我不希望 m_c1 成为 Gtk::Grid

到目前为止我已经尝试过:我使用 Gtk::HBox m_c1 中可用的 get_child_at() 方法来获取引用它的第一个 child 。然后,我对那个 child 调用了 get_width()get_height()。想法是为 m_c2 的子部件提供这些维度。问题是返回的引用是一个 nullptr

从我读过的一些帖子来看,我的小部件似乎还没有实现,这可以解释我的困难。我怎样才能做到这一点?

最佳答案

您需要将网格中的每个按钮设置为 expand horizontally .然后所有的大小都会自行处理。

关于c++ - 在构造函数中访问容器子小部件维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com