gpt4 book ai didi

c++ - 那里有任何可以便携处理*不*在主线程中的 GUI 库吗?

转载 作者:太空狗 更新时间:2023-10-29 23:05:50 25 4
gpt4 key购买 nike

<分区>

jar 头上写的是什么。

Qt 5.x 在 Windows 上运行良好(尽管有控制台警告消息),但在 Linux 上重新绘制时会窒息,如果你放置 GUI 事件循环,显然任何基于 Cocoa(我从未使用过)的东西都会扼杀自己在主线程之外。

那么,有没有什么东西可以在 Windows 和 Linux(也许还有 Mac,但这似乎是一个远景)中可靠地处理主线程中未创建/没有事件循环的运行)?

这里的背景是我有一个要通过 tclsh 使用的 DLL/SO,我希望该 DLL/SO 提供一个 GUI。我可以弄乱 SWIG 生成的包装器以获得主解释器并从那里运行一些东西,但弄乱它似乎是一个主要的麻烦。我对 Tk 进行了一些试验,但即使在调用 Tk_Init 之后,Tk_MainWindow 也会返回 NULL在创建的线程中的解释器上(解释器也是在该线程中创建的)。按需提供代码。

编辑:代码。这一切都在通过 load <libname>.so 加载 DLL/SO 后创建的单独线程中运行在 tclsh .

Tcl_Interp* interp = Tcl_CreateInterp();
Tcl_AppInit(interp); // added on suggestion - all results the same so far
Tk_Init(interp);
/* GDB reveals 'interp->resultDontUse' to be blank here.
Return value of the above statement is 1 (TCL_ERROR) */
Tk_Window main_window = Tk_MainWindow(interp);
// main_window is NULL here, and thus the following line fails miserably
Tk_Window canvas = Tk_CreateWindow(interp, main_window, "gfx", NULL);
while(true) {
{ ... }
Tcl_DoOneEvent(TCL_DONT_WAIT);
}
Tcl_DeleteInterp(interp);

注意我仍然可以切换库。如果有一个 lib 可以解决原始问题而上面的问题无法解决,我会切换。

更新

Tcl/Tk 似乎可以很好地处理非主线程中的情况。至少,比Qt好。谢谢!

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com