假设我有一个有两个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
中的子窗口小部件的大小相同,以确保两个容器之间的视觉一致性。否则,它看起来像这样:
为了确保,我不希望m_c1
成为Gtk::Grid
。
以下是我到目前为止所尝试的内容:我使用了get_child_at()
Gtk::HBox
提供的m_c1
方法来获取对其第一个孩子的引用。然后我打电话给那个孩子get_width()
和get_height()
。我们的想法是为这些维度提供m_c2
的子小部件。问题是返回的引用是nullptr
。
从我读过的一些帖子来看,似乎我的小部件可能尚未实现,这可以解释我的困难。我怎么能做到这一点?