首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有弹出菜单的GTK3 C菜单按钮示例代码(仅使用.c,不使用.ui)

带有弹出菜单的GTK3 C菜单按钮示例代码(仅使用.c,不使用.ui)
EN

Stack Overflow用户
提问于 2018-11-05 17:42:47
回答 1查看 1.2K关注 0票数 2

如何使用gtk_popover_menu_new()来处理简单的gtk_menu_button_new()?当我尝试使用Glade时,它工作得非常完美,然而,我需要的是.c代码,而不是.ui代码。我在互联网上找不到只为弹出菜单使用.c的示例代码

有人可以提供非常简单的示例代码,其中弹出菜单包含几个按钮?优选地,其中窗口设计代码是用int main而不是static void activate编写的。

There will be .gif that will show what I want to make

附言:我知道,为了容纳多个按钮,我需要使用GTK_BOX。

编辑:我已经添加了示例代码,其中包含菜单按钮,但它不起作用。请完成这段代码,以便像在.gif中一样工作。编译: gcc pkg-config --cflags gtk+-3.0 -o './testprogram.run‘'./testprogramcode.c’pkg-config --libs gtk+-3.0

编辑2:我给testBox添加了一个按钮

代码:

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

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

    GtkWidget *window;


    gtk_init(&argc, &argv);
    //Create window
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
    gtk_window_set_title(GTK_WINDOW(window), "Simple menu");


    //Creating fixed container
    GtkWidget *fixedContainer = gtk_fixed_new ();
    gtk_container_add(GTK_CONTAINER(window), fixedContainer);

    //Creating and adding new menu button in fixed container
    GtkWidget *testMenuButton = gtk_menu_button_new ();
    gtk_fixed_put (GTK_FIXED(fixedContainer), testMenuButton, 50, 50);

    //Adding popover to menu button
    GtkWidget *testPopOver = gtk_popover_new (testMenuButton);

    //Creating GTK_BOX to hold popover box contents
    GtkWidget *testBox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);

    //Creating and adding new button in testBox
    GtkWidget *testButton = gtk_button_new ();
    gtk_box_pack_start(GTK_BOX(testBox), testButton, TRUE, TRUE, 5);

    //How to add testBox to testPopOver?









    g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}
EN

Stack Overflow用户

发布于 2018-11-05 19:32:08

您可以尝试以下代码片段:

代码语言:javascript
复制
  GtkWidget *mb = gtk_menu_button_new ();
  GtkWidget *po = gtk_popover_new (mb);
  GtkWidget *lb = gtk_label_new ("hello");

  gtk_container_add (po, lb);
  g_object_set (mb, "margin", 150, NULL);
  gtk_menu_button_set_popover (mb, po);

然而,避免使用.ui是一种省钱的做法。你最好避免过早的优化。

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

https://stackoverflow.com/questions/53151802

复制
相关文章

相似问题

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