首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将GTKScrolledWindow放在另一个容器中?

如何将GTKScrolledWindow放在另一个容器中?
EN

Stack Overflow用户
提问于 2017-05-28 06:38:17
回答 1查看 287关注 0票数 1

我希望在我的GtkTextView中有一个可滚动的GtkWindow,但是我只想让GtkTextView部件滚动,而不是整个窗口。我试着把GTKTextView放在GtkScrolledWindow中,把GtkScrolledWindow放在GtkFixed容器中,但是GtkTextView没有出现。不过,当我将GtkTextView直接放在GtkFixed容器中时,它就会出现。

代码语言:javascript
复制
#include <gtk/gtk.h>

GtkWidget *window, *scrolled_window, *fixed, *log_box, *button1;
GtkTextBuffer *log_box_buffer;

static void button1_clicked(GtkWidget *widget, gpointer data) {
    printf("button1_clicked\n");
    gtk_text_buffer_insert_at_cursor(log_box_buffer, "You clicked the button.\n", 24);
}

static void app_activate(GtkApplication *app, gpointer user_data) {

    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Window Title Here");
    gtk_window_set_default_size(GTK_WINDOW(window), 700, 400);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

    scrolled_window = gtk_scrolled_window_new(NULL, NULL);

    fixed = gtk_fixed_new();

    button1 = gtk_button_new_with_label("Button 1");
    g_signal_connect(button1, "clicked", G_CALLBACK(button1_clicked), NULL);

    log_box_buffer = gtk_text_buffer_new(NULL);
    log_box = gtk_text_view_new_with_buffer(log_box_buffer);

    gtk_fixed_put(GTK_FIXED(fixed), button1, 50, 50);


    /* Here I tried to put the textview inside of the scrolled window and
       add the scrolled window to the fixed container. The textview
       doesn't show up when I do this. */

    gtk_container_add(GTK_CONTAINER(scrolled_window), log_box);
    gtk_fixed_put(GTK_FIXED(fixed), scrolled_window, 200, 50);


    /* I also tried putting the textview directly in the fixed container.
       This shows up, but obviously I can't scroll it. */

//  gtk_fixed_put(GTK_FIXED(fixed), log_box, 200, 50);


    gtk_container_add(GTK_CONTAINER(window), fixed);
    gtk_widget_show_all(window);
}

int main(int argc, char **argv) {

    GtkApplication *app;
    int status;

    app = gtk_application_new("the.application.id", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(app_activate), NULL);

    status = g_application_run(G_APPLICATION(app), argc, argv);

    g_object_unref(app);
    return status;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-28 10:41:41

不知道为什么要使用固定容器。如果是,则必须提供滚动窗口的宽度和高度,该窗口包含文本视图。我已经编译好你的代码了。只需添加:

代码语言:javascript
复制
gtk_widget_set_size_request (GTK_WIDGET(scrolled_window), 200, 200);

这将设置200乘200的大小,举个例子,在你滚动的窗口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44224508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档