Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Tạo menu C++ trên Linux có giao diện GUI

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    12

    Angry Tạo menu C++ trên Linux có giao diện GUI

    Buổi trước mình đã hỏi dd về C++ trên linux.Mình tìm hiểu thì thấy Ubuntu 8.10 là có sẵn GTK 2.14.Nhưng mình chưa hiểu rõ về cái này.Việc tạo các menu giống như notepad mà trên đó ta có thể soạn thảo được,cũng có các toolbar kiểu notepad(File,Edit,View,Help...sau khi saọn thảo trên đó khi kích đúp vào File thì có thể Save các kiểu định dạng file như txt,và cũng có thể mở được các file.txt).Mong dd giúp mình giải quyết bài toán khó này.DD có thể gửi Code Demo lên cho mình tham khảo.Cái ý tưởng này làm mình đau đầu đã lâu mà chưa thể giải quyết được.Ai có lòng thì giúp mình nhanh với nhá

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    8->

    C Code:
    1. #include <gtk/gtk.h>
    2.  
    3. static gint button_press (GtkWidget *, GdkEvent *);
    4. static void menuitem_response (gchar *);
    5.  
    6. int main (int argc, char *argv[])
    7. {
    8.  
    9.     GtkWidget *window;
    10.     GtkWidget *menu;
    11.     GtkWidget *menu_bar;
    12.     GtkWidget *root_menu;
    13.     GtkWidget *menu_items;
    14.     GtkWidget *vbox;
    15.     GtkWidget *button;
    16.     char buf[128];
    17.     int i;
    18.  
    19.     gtk_init (&argc, &argv);
    20.  
    21.     /* create a new window */
    22.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    23.     gtk_widget_set_usize( GTK_WIDGET (window), 200, 100);
    24.     gtk_window_set_title(GTK_WINDOW (window), "GTK Menu Test");
    25.     gtk_signal_connect(GTK_OBJECT (window), "delete_event",
    26.                        (GtkSignalFunc) gtk_main_quit, NULL);
    27.  
    28.     /* Init the menu-widget, and remember -- never
    29.      * gtk_show_widget() the menu widget!!
    30.      * This is the menu that holds the menu items, the one that
    31.      * will pop up when you click on the "Root Menu" in the app */
    32.     menu = gtk_menu_new();
    33.  
    34.     /* Next we make a little loop that makes three menu-entries for "test-menu".
    35.      * Notice the call to gtk_menu_append.  Here we are adding a list of
    36.      * menu items to our menu.  Normally, we'd also catch the "clicked"
    37.      * signal on each of the menu items and setup a callback for it,
    38.      * but it's omitted here to save space. */
    39.  
    40.     for(i = 0; i < 3; i++)
    41.         {
    42.             /* Copy the names to the buf. */
    43.             sprintf(buf, "Test-undermenu - %d", i);
    44.  
    45.             /* Create a new menu-item with a name... */
    46.             menu_items = gtk_menu_item_new_with_label(buf);
    47.  
    48.             /* ...and add it to the menu. */
    49.             gtk_menu_append(GTK_MENU (menu), menu_items);
    50.  
    51.             /* Do something interesting when the menuitem is selected */
    52.             gtk_signal_connect_object(GTK_OBJECT(menu_items), "activate",
    53.                 GTK_SIGNAL_FUNC(menuitem_response), (gpointer) g_strdup(buf));
    54.  
    55.             /* Show the widget */
    56.             gtk_widget_show(menu_items);
    57.         }
    58.  
    59.     /* This is the root menu, and will be the label
    60.      * displayed on the menu bar.  There won't be a signal handler attached,
    61.      * as it only pops up the rest of the menu when pressed. */
    62.     root_menu = gtk_menu_item_new_with_label("Root Menu");
    63.  
    64.     gtk_widget_show(root_menu);
    65.  
    66.     /* Now we specify that we want our newly created "menu" to be the menu
    67.      * for the "root menu" */
    68.     gtk_menu_item_set_submenu(GTK_MENU_ITEM (root_menu), menu);
    69.  
    70.     /* A vbox to put a menu and a button in: */
    71.     vbox = gtk_vbox_new(FALSE, 0);
    72.     gtk_container_add(GTK_CONTAINER(window), vbox);
    73.     gtk_widget_show(vbox);
    74.  
    75.     /* Create a menu-bar to hold the menus and add it to our main window */
    76.     menu_bar = gtk_menu_bar_new();
    77.     gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 2);
    78.     gtk_widget_show(menu_bar);
    79.  
    80.     /* Create a button to which to attach menu as a popup */
    81.     button = gtk_button_new_with_label("press me");
    82.     gtk_signal_connect_object(GTK_OBJECT(button), "event",
    83.         GTK_SIGNAL_FUNC (button_press), GTK_OBJECT(menu));
    84.     gtk_box_pack_end(GTK_BOX(vbox), button, TRUE, TRUE, 2);
    85.     gtk_widget_show(button);
    86.  
    87.     /* And finally we append the menu-item to the menu-bar -- this is the
    88.      * "root" menu-item I have been raving about =) */
    89.     gtk_menu_bar_append(GTK_MENU_BAR (menu_bar), root_menu);
    90.  
    91.     /* always display the window as the last step so it all splashes on
    92.      * the screen at once. */
    93.     gtk_widget_show(window);
    94.  
    95.     gtk_main ();
    96.  
    97.     return 0;
    98. }
    99.  
    100. /* Respond to a button-press by posting a menu passed in as widget.
    101.  *
    102.  * Note that the "widget" argument is the menu being posted, NOT
    103.  * the button that was pressed.
    104.  */
    105.  
    106. static gint button_press (GtkWidget *widget, GdkEvent *event)
    107. {
    108.  
    109.     if (event->type == GDK_BUTTON_PRESS) {
    110.         GdkEventButton *bevent = (GdkEventButton *) event;
    111.         gtk_menu_popup (GTK_MENU(widget), NULL, NULL, NULL, NULL,
    112.                         bevent->button, bevent->time);
    113.         /* Tell calling code that we have handled this event; the buck
    114.          * stops here. */
    115.         return TRUE;
    116.     }
    117.  
    118.     /* Tell calling code that we have not handled this event; pass it on. */
    119.     return FALSE;
    120. }
    121.  
    122.  
    123. /* Print a string when a menu item is selected */
    124.  
    125. static void menuitem_response (gchar *string)
    126. {
    127.     printf("%s\n", string);
    128. }
    None!

Các đề tài tương tự

  1. chương trình C đơn giản trên Linux
    Gửi bởi panfider1 trong diễn đàn Thủ thuật, Tutorials và Mã nguồn
    Trả lời: 10
    Bài viết cuối: 29-07-2016, 05:43 PM
  2. Giúp em giải phương trình trên linux với ạ
    Gửi bởi khienmv trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 18
    Bài viết cuối: 30-11-2011, 05:43 PM
  3. Tạo giao diện đồ họa trong lập trình C trên linux
    Gửi bởi huybka trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 3
    Bài viết cuối: 30-06-2009, 09:47 AM
  4. Lập trình C++ trên Linux giao diện GUI được tạo từ các lớp GUI khi chạy chương trình
    Gửi bởi thecongit88 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 11-05-2009, 04:42 PM
  5. Giao diện winform với menu trên C#, chỉ giúp mình với?
    Gửi bởi lovedtn trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-05-2009, 01:01 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn