如何配置widget Entry,让frame的长度不超过11​​个字符

How to configure the widget Entry so that the length of the frame so as not to exceed 11 characters

我在 Ubuntu 20.04。我需要将 GTK::Entry 小部件的框架配置为不超过 11 个字符。我以为我可以使用此代码 set_max_width_chars

Gtk::Entry nomUsb;
nomUsb.set_can_focus(true);
nomUsb.set_max_length(11);
nomUsb.set_max_width_chars(11);
boiteBoutonsH1.pack_start(nomUsb, Gtk::PACK_SHRINK);

但结果给出了这个(20 个字符):

有什么想法吗?

这里有一些代码,我怀疑,会做你想做的事:

#include <gtkmm.h>

class MainWindow : public Gtk::Window
{

public:

    MainWindow()
    {
        // Can't type in more than 11 chars (copy/paste will truncate):
        m_11CharMax.set_max_length(11);

        // Sets the width of the entry to about 11 characters wide (depends on the character):
        m_11CharMax.set_width_chars(11);
    
        add(m_11CharMax);
        show_all();
    }

private:

    Gtk::Entry m_11CharMax;

};

int main(int argc, char **argv)
{
    auto app = Gtk::Application::create(argc, argv, "so.question.q63568716");
    
    MainWindow w;

    return app->run(w);
}

以下 Makefile 将为您构建此文件(假设代码位于名为 main.cpp:

的文件中
all: main.cpp
    g++ main.cpp -o example.out `pkg-config gtkmm-3.0 --cflags --libs`

程序 example.out 将创建一个 window,其中 Gtk::Entry 作为其唯一的子窗口小部件。此条目将 大约 11 个字符宽(请注意,这取决于字符。例如, m 大于 UI 中的 l的字体)。此外,它不会接受超过 11 个字符作为输入:

如果您尝试向其中复制并粘贴超过 11 个字符,该条目将自动截断以适应。即使调整大小,也无法输入超过 11 个字符: