跨平台,开源,简单的GUI库

时间:2011-03-29 21:46:53

标签: c++ user-interface open-source cross-platform

我对GUI库没有多少经验,而且我正在寻找一个跨平台的,没有控制主循环,并且需要少量代码来设置一个简单的窗口文本输入/输出。我也希望它是开源的。

4 个答案:

答案 0 :(得分:3)

我在非主线程中成功使用了GTK。它不像Qt那么光滑,但它肯定会完成工作。另外,它有一些不错的C ++绑定。

http://www.gtk.org/

例如:

#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <thread>


void myCoolThread()
{
  // You can setup all of your gtk stuff here...
  GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_widget_show(window);
  gtk_main();
  gdk_threads_leave();
}

int main(int argc, char **argv)
{
  g_thread_init(NULL);
  gdk_threads_init();
  gdk_threads_enter();
  gtk_init(&argc, &argv);

  auto gtkThread = std::thread(myCoolThread);

  while(1)
  { sleep(1); } // Do whatever other work here...

  gtkThread.join();

  return 0;
}

答案 1 :(得分:2)

如果必须是C ++,我建议QT。否则,Java可能会从简单和跨平台的角度为您提供良好的解决方案。

答案 2 :(得分:2)

wxWidgets很好,虽然可能(或可能不)太复杂,无法满足您的需求。我从来没有在Mac,Win和Linux上使用它。

非常容易设置并且是开源的。不确定轻量级,但这取决于你需要它做什么。

答案 3 :(得分:1)

你可以使用tk,如果你不介意写一点C,你可以编写自己的事件循环(为什么你想要这样做是我不明白的事情。)

作为奖励,您将获得一种嵌入式语言(tcl),您也可以使用它来定义GUI。至少根据我的经验,使用动态语言比使用C,C ++或Java(或FORTRAN,开发GUI)要容易得多,但我不会讨论我职业生涯的这一部分: - )