因为我使用的组合框可能包含很长的尺寸, 这会导致组合框的宽度远远超出合理尺寸,我试图给出最大宽度组合框。Gtk(mm)组合框的极限宽度
如果我这样做是这样的:
class MyCombo : public Gtk::ComboBox {
private:
CellRendererText render;
public:
MyCombo() {
render.property_width_chars() = 10;
render.property_ellipsize() = Pango::ELLIPSIZE_END;
pack_start(render, true);
}
};
结果将所需宽度的空白单元格,因为我没有指定要显示的列,这似乎合乎逻辑的。但是,我怎么能这样做呢?使用pack_start
只会绕过渲染...
另一种方法是这样的一个:
class MyCombo : public Gtk::ComboBox {
private:
CellRendererText render;
public:
MyCombo() {
pack_start(render, true);
set_cell_data_func(render, sigc::mem_fun(*this, &MyCombo::render_iter));
}
void render_iter(const TreeModel::const_iterator& iter) {
Glib::ustring data = get_string_from_iter(iter);
int desired_width_chars = 10; //for example
render.property_text() = ellipsize_string(data, desired_width_chars);
}
};
使用这种方法,它的工作原理,但在弹出的文本(什么打开了当u点击下拉框)也缩短了,这是不是我想要的(显然,用户应该能够阅读整个字符串,我不在乎弹出窗口)。
你能帮我一下吗?我会很乐意提供任何建议/替代解决方案。
问候tagelicht
所以你想限制组合框的宽度,但不限制组合框弹出的宽度? – theGtknerd
。我真的很绝望,因为这似乎是常见的行为,我只是没有得到如何实现它:( – tagelicht