# Native Code > برنامه نویسی با C > برنامه نویسی GTK، GTK+‎ و wxWidget >  برنامه نویسی در لینوکس

## shirzad_info

سلام
من میخوام تو لینوکس ( اوبونتو ) به C++‎  برنامه نویسی کنم
برای gui میخوام از gtk  استفاده بکنم . که اینطور که من متوجه شدم برای C++‎ , gtkmm  هست
حالا هر کاری میکنم نمیتونم نصب و ازش استفاده کنم .
یکی از دوستان گفتن که اینا رو نصب کنم
build-essentials - libgtk2.0-dev - libglib2.0-dev - libglibmm-2.4-dev - libgtkmm-2.4-dev
نصب کردم ولی error میده
ببینید من الان 1 هفته هست که دنبال این موضوع هستم ولی نتیجه ای نمیگیرم
من میخوام بدونم چطوری از gtk  یا همون gtkmm  در C++‎  استفاده کنم . همین !
به چه بسته هایی نیاز دارم و اون بسته ها رو چطوری نصب کنم و چطوری تو برنامه فراخوانی کنم  و...
در حالت کلی من برای برنامه نویسی با C++‎ و gtk چیکار باید بکنم  ؟
یه مثال بزنین با C++‎ و gtkmm  که یه ‍نجره برام درست کنه و helloo world  رو بنویسه 
ممنون میشم کمکم کنید !

----------


## Seyyed ali

از synaptic یا apt-get استفاده کن 
همچنین به این سایت هم یه سری بزن
http://www.ubuntu.ir

----------


## ravanfar

سلام
به تاپیک زیربرو:
https://barnamenevis.org/showthread.php?t=112507

البته من در با کمک دوستان به روش زیر موفق بودم:

========================================
من توانستم GCC رانصب کنم ضمن تشکر از دوستان برای آگاهی سایر خوانندگان روش آنرا ذکر میکنم:
*فرضیات:*
سیستم عامل: Linux نسخه: Debian ویرایش: Xandros بر روی یک دستگاه Eee pc 4G
*روش کار:*
1- پس از راه اندازی سیستم Ctrl+Alt+T را گرفته به shell بروید
2- -sudo su را تایپ کنید enter نمائید (poweruser شوید)
3- به سایت: http://www.debian.org/mirror/mirror_full رفته و یکی را انتخاب کنید.
4- مثلا اگر هنگ کنگ را انتخاب کنیدکد زیر را در اعلان shell وارد کنید:
edit /etc/apt/sources.list deb <ftp://ftp.hk.debian.org/debian> stable main contrib non-free
5- کد زیر را وارد کرده enter بزنید:
apt-get update 
6- کد زیر را وارد کرده enter بزنید:
apt-get install build-essential 
7- با زدن Ctrl+D از حالت Poweruser خارج شوید.
*آزمایش:*
1- برنامه معروف Hello word را نوشته در فایلی مانند: Hello.C ذخیره کرده و در خط فرمان shell دستور زیر را وارد کرده enter را بزنید:
gcc hello.c; ./a.out
یا دستور زیر:
g++ hello.c; ./a.out
=======================================

بعدش هم از anjuta که یک IDE مناسب است استفاده میکنم:
http://www.anjuta.org/
از دستور زیر درحالت power user برای نصبش استفاده کن:
apt-get install anjuta

----------


## sang9111

پیشنهاد می کنم  حالا که می خوای این کار و بکنی یک تحقیقی برای QT  بکنی  کتابخانه های منسجم تری داره  و محیط GUI  قشنگتری فراهم می کنه  و  راحت تر در سکوهای مختلف اجرا می شه  و طبق تجربه شخصی خودم سرعتشم زیاد تر  
انتخاب با شماست  :چشمک:

----------


## __ziXet__

> پیشنهاد می کنم  حالا که می خوای این کار و بکنی یک تحقیقی برای QT  بکنی  کتابخانه های منسجم تری داره  و محیط GUI  قشنگتری فراهم می کنه  و  راحت تر در سکوهای مختلف اجرا می شه  و طبق تجربه شخصی خودم سرعتشم زیاد تر  
> انتخاب با شماست


من تقریبا همه رو امتحان کردم.
به نظرم کدنویسی تو QT یکمی سخته ! یعنی اگه سورس دوتا برنامه مشابه رو ببینی که یکی با gtk هست و دیگری با qt، برنامه gtk به مراتب خوانا تر از QT هست.
همنطور که گفتم من اکثر gui رو امتحان کردم و بینشون wx و gtk رو پسندیدم

البته این نظر منه

خوشحال میشم نظر شما رو هم بدونم دراین باره

----------


## sang9111

این حرف شما رو قبول دارم آره خوانا تره  
wxWidget  که اصلا با Qt  قابل مقایسه نیست  کتابخانه ای به مراتب کوچکتره  و اصلا از لحاظ امکانت و گستردگی با Qt قابل مقایسه نیست  یعنی  آدم  وقتی با Qt  کار می کنه از شدت امکانات مختلف یه خورده گیج میشه  سرعت توسعه اش که من یکی  کم میارم  در هر نسخه اش  کلی به حجمش اضافه میشه خیلی زیاد  البته این یه حسنه 
اما  gtk  کلا پایه اش با c   است و کمتر از اصول شی گرایی  بهره برده برای همین خوانایی  یه خورده بیشتره  مثل هر کد  c  و C++‎  دیگری 
آره منم اول که می خواستم  یاد بگیرم  دیدم  gtk  راحتره  ولی آینده  QT   رو نداره   در حال حاضر بهترین  و با امکاناترین  Qt  است  و رو دستش نیست  گوگل و چند شرکت معتبر دیگه دارن  ازQt  استفاده می کنن  کروم  با همین  Qt نوشته شده  webkit  فکر می کنم همین دلایل کافی :چشمک:

----------


## mahzrb@gmail.com

همه کاربران سلام 

اگر دوستان در مورد gtk اطلاعات دارند لطفا بگویید که چگونه می توان اسکریپت های شل (مثلا sudo dpkg -i ****.deb )را با کد های gtk اجرا کرد

----------


## ilius.gnu

GTKmm خوانایی و شیءگرایی‌ش خیلی بیشتر از GTK هست و خیلی راحت‌تره.

----------


## mahzrb@gmail.com

سلام 
تشکر می کنم ازاین که پاسخ دادید

من می خوام یک پنجره که رمز عبور کاربر root رو بگیره و وارد کاربر روت بشه البته با ظاهر گرافیکی زیر

من ظاهر گرافیکی رو ساختم فقط مشکلم اینه که(به زبان ساده بگویم) چه کدی بنویسم که ابتدا عبارت  sudo -s -H تایپ کرد کلید اینتر را بزند ودر مقابل عبارت password عبارت تایپ شده در پنجره ( http://upload.iranblog.com/6/1247180850.gif ) قرار داده واینتر را بزند :متفکر: 
البته عبارات زیر را در راهنماهای gtk که با بسته ی libgtk*doc نصب شده پیدا کردم ولی نمی دانم چطور باید استفاده کرد 



کد:
   gnome_password_dialog_get_type (void);
GtkWidget* gnome_password_dialog_new      (const char *dialog_title,
                       const char *message,
                       const char *username,
                       const char *password,
                       gboolean    readonly_username);

gboolean   gnome_password_dialog_run_and_block           (GnomePasswordDialog *password_dialog);

/* Attribute mutators */
void gnome_password_dialog_set_show_username       (GnomePasswordDialog *password_dialog,
                            gboolean             show);
void gnome_password_dialog_set_show_domain         (GnomePasswordDialog *password_dialog,
                            gboolean             show);
void gnome_password_dialog_set_show_password       (GnomePasswordDialog *password_dialog,
                            gboolean             show);
void gnome_password_dialog_set_username            (GnomePasswordDialog *password_dialog,
                            const char          *username);
void gnome_password_dialog_set_domain              (GnomePasswordDialog *password_dialog,
                            const char          *domain);
void gnome_password_dialog_set_password            (GnomePasswordDialog *password_dialog,
                            const char          *password);
void gnome_password_dialog_set_readonly_username   (GnomePasswordDialog *password_dialog,
                            gboolean             readonly);
void gnome_password_dialog_set_readonly_domain     (GnomePasswordDialog *password_dialog,
                            gboolean             readonly);

void                        gnome_password_dialog_set_show_remember (GnomePasswordDialog         *password_dialog,
                                     gboolean                     show_remember);
void                        gnome_password_dialog_set_remember      (GnomePasswordDialog         *password_dialog,
                                     GnomePasswordDialogRemember  remember);
GnomePasswordDialogRemember gnome_password_dialog_get_remember      (GnomePasswordDialog         *password_dialog);
void                        gnome_password_dialog_set_show_userpass_buttons (GnomePasswordDialog         *password_dialog,
                                                                              gboolean                     show_userpass_buttons);

/* Attribute accessors */
char *     gnome_password_dialog_get_username            (GnomePasswordDialog *password_dialog);
char *     gnome_password_dialog_get_domain              (GnomePasswordDialog *password_dialog);
char *     gnome_password_dialog_get_password            (GnomePasswordDialog *password_dialog);

gboolean   gnome_password_dialog_anon_selected          (GnomePasswordDialog *password_dialog);

وهمچنین
void e_passwords_init (void);

void        e_passwords_shutdown          (void);
void        e_passwords_cancel(void);
void        e_passwords_set_online(int state);
void        e_passwords_remember_password (const char *component, const char *key);
void        e_passwords_add_password      (const char *key, const char *passwd);
char       *e_passwords_get_password      (const char *component, const char *key);
void        e_passwords_forget_password   (const char *component, const char *key);
void        e_passwords_forget_passwords  (void);
void        e_passwords_clear_passwords (const char *component);

و در این صفحات یک مثال وجود دارد
http://gobby.0x539.de/trac/browser/s...e883fafcf485b3

http://www.tinymail.org/trac/tinymai...log.c?rev=2825

----------

