GTK和滚动文本视图

rub*_*buc 5 c gtk2

这就是我到目前为止所拥有的

GtkWidget* createConsoleBox()
{
        GtkWidget* textArea = gtk_text_view_new();
        GtkWidget* scrollbar = gtk_vscrollbar_new(gtk_text_view_get_vadjustment(GTK_TEXT_VIEW(textArea)));
        GtkWidget* textEntry = gtk_entry_new();

        GtkWidget* console = gtk_table_new(3, 2, FALSE);

        gtk_table_attach_defaults(GTK_TABLE(console), textArea, 0, 1, 0, 1);
        gtk_table_attach_defaults(GTK_TABLE(console), scrollbar, 1, 2, 0, 1);

        gtk_table_attach_defaults(GTK_TABLE(console), textEntry, 0, 2, 1, 2);

        return console;

}
Run Code Online (Sandbox Code Playgroud)

我希望文本视图可以滚动,因为文本开始填充框,但框继续扩展以容纳更多文本.如何限制文本视图的大小并创建可滚动的文本视图.

提前致谢 :-)

pto*_*ato 10

我担心你误解了滚动条在GTK中是如何工作的; 通常您不直接创建滚动条,但是您要放置要滚动的小部件GtkScrolledWindow.这会自动创建滚动条并将它们连接到滚动窗口内的窗口小部件; 在您的情况下,文本视图.

这是你的createConsoleBox()功能应该是什么样子:

GtkWidget* createConsoleBox()
{
    GtkWidget* textArea = gtk_text_view_new();
    GtkWidget* scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
    GtkWidget* textEntry = gtk_entry_new();
    GtkWidget* console = gtk_table_new(3, 1, FALSE);

    gtk_container_add(GTK_CONTAINER(scrolledwindow), textArea);
    gtk_table_attach_defaults(GTK_TABLE(console), scrolledwindow, 0, 1, 0, 1);
    gtk_table_attach_defaults(GTK_TABLE(console), textEntry, 0, 1, 1, 2);

    return console;
}
Run Code Online (Sandbox Code Playgroud)