نظرسنجی: کدامیک از framwork ها و toolkit های زیر رو (با توجه به نوع استفاده) ترجیح می دهید؟
+Gtk
25.00%
1 25.00%
Qt
75.00%
3 75.00%
WxWidgets
0%
0 0%
مجموع 4 رای 100%
* چنانچه به گزینه‌ای رای داده اید، با علامت ستاره مشخص گردیده است. [نمایش نتایج]

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مقایسه +Qt ، Gtk و WxWidgets
#1
برای ساخت و توسعه ی GUI ( graphical user interfaces ) programs ( برنامه هایی با واسط کاربری گرافیکی ) تحت Cross-platform (یعنی اینکه برنامه ی نوشته شده به platform خاصی بستگی نداشته باشه) ، برنامه نویسی در framework ها و توسط toolkit های مختلفی انجام می گیره که در اینجا سه تای اونها رو برای بررسی ذکر می کنم :

+Gtk : این toolkit توسط بنیاد GNOME توسعه داده می شه ، با C نوشته شده و به صورت Native برنامه نویسی با C رو فراهم می کنه البته binding هایی برای زبان های دیگه مثل (Vala ،Ruby ،Python ،Java ،.NET programming languages ، PHP ، C++، Perl ) هم براش وجود داره مثل gtkmm برای C++

Qt : این framework توسط شرکت Nokia پشتیبانی می شه ، دو نسخه داره ؛ یه نسخه اش تحت جواز LGPL ، که باهاش نرم افزار تجاری Open Source هم میشه نوشت و دیگری Commercial (برای فروشه) و برای نوشتن برنامه های انحصاری به کار میره که این دو نسخه از نظر کتابخونه ها فرق محسوسی با هم نمی کنن ،Qt با ++C نوشته شده و به صورت Native برنامه نویسی با ++C رو فراهم می کنه البته binding هایی برای زبان های دیگه مثل (Lisp ،Lua ،.NET for KDE apps ، C# & .NET ، Ada ،Ruby ،PHP ،Perl ) هم داره ، سیستم هایی مثل Linux/X11 ،Mac OS X ،Windows ،Embedded Linux ،Windows CE ،Symbian ،Maemo و ... رو پوشش میده ، نرم افزار هایی مانند Google Earth ، KDE ، Opera ،OPIE ، VoxOx ، Skype ، VLC media player و VirtualBox محصول Qt بوده اند.

WxWidgets : با ++C نوشته شده و به صورت Native برنامه نویسی با ++C رو فراهم می کنه البته binding هایی برای یک سری زبان های دیگه رو هم داره ، سیستم هایی مثل Microsoft Windows ، Mac OS X، ( and GTK+ Motif ، X11 ) Linux/Unix ، OpenVMS ، OS/2 و AmigaOS رو پوشش میده.


و در انتها اینکه Qt کامل ترین مستندات رو نسبت به بقیه داره ، WxWidgets هم مستندات خیلی خوبی رو داره ولی +Gtk اصلا مستندات خوبی رو نداره . پروژه هایی که توسط Qt نوشته می شوند از نظر سرعت تفاوت محسوسی با معادلشون در +Gtk ندارند ( کمی کندتر ) ، از نظر حجم کد تولید شده ، حجم کمتری رو تولید می کنند ولی در عوض سرعت کامپایل نسبتا کمتری رو دارند ولی کاملا رو این قضیه مطمئن نیستم که اگه درست هم باشه به حدی هست که اصلا محسوس نیست و از نظر مصرف منابع ، منابع بیشتری رو مصرف می کنند که البته محسوسه ولی آنچنان هم زیاد نیست ولی در عوض Qt امکانات بیشتری (دارای کتابخانه های نسبتا کامل تر و محیط های بهتری برای نوشتن) رو در اختیار میذاره و این مشخص می کنه که +Gtk برای جاهایی که منابع ( در حد کیلو بایت ) و سرعت مهمترند کاربرد بیشتری رو نسبت به Qt داره.
پاسخ
سپاس شده توسط مهرداد عباسی ، علیرضا حر
#2
ببخشید آموزش اجرای یک فایل gtk در c++ رو ندارید؟
پاسخ
سپاس شده توسط
#3
با سلام خدمت شما دوست عزیز
کد:
#include <gtk/gtk.h>

void
hello (void)
{
  g_print ("Hello World\n");
}

void
destroy (void)
{
  gtk_main_quit ();
}

int
main (int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *button;

  gtk_init (&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_signal_connect (GTK_OBJECT (window), "destroy",
              GTK_SIGNAL_FUNC (destroy), NULL);
  gtk_container_border_width (GTK_CONTAINER (window), 10);

  button = gtk_button_new_with_label ("Hello World");

  gtk_signal_connect (GTK_OBJECT (button), "clicked",
              GTK_SIGNAL_FUNC (hello), NULL);
  gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
                 GTK_SIGNAL_FUNC (gtk_widget_destroy),
                 GTK_OBJECT (window));
  gtk_container_add (GTK_CONTAINER (window), button);
  gtk_widget_show (button);

  gtk_widget_show (window);

  gtk_main ();

  return 0;
}

این کد را به وسیله make فایل زیر اجرا کنید
کد:
GTK_INCLUDE = -I/usr/local/include
GTK_LIB = -L/usr/local/lib
X11_LIB = -L/usr/X11R6/lib
CC = gcc -g -Wall
CFLAGS = $(GTK_INCLUDE)
LDFLAGS = $(GTK_LIB) $(X11_LIB) -lgtk -lgdk -lglib -lX11 -lXext -lm

OBJS = helloworld.o

helloworld:    $(OBJS)
#    $(CC) $(GTK_LIB) $(X11_LIB) $(OBJS) -o helloworld $(LDFLAGS)

clean:
    rm -f *.o *~ helloworld

اگر مشکلی در اجرای کد بالا دارید ربطی به gtk ندارد
موفق باشید
[عکس: <a href=www.Mojsazan.com.gif]" class="mycode_img" />
پاسخ
سپاس شده توسط


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان