wxWidgets:集成定制GTK+;小装置
问题: 如何实现自定义的wxWidgets:集成定制GTK+;小装置,wxwidgets,Wxwidgets,问题: 如何实现自定义的wxSciter控件,并将其正确放置在标准的wxWidgets控件中? (因此它可以像浏览器窗口一样工作) 已解决: 我在提供以下建议后解决了问题: class NativeWindow : public wxNativeWindow { public: explicit NativeWindow(wxWindow* parent) : wxNativeWindow() { GtkWidget* widget = SAPI
wxSciter
控件,并将其正确放置在标准的wxWidgets控件中?
(因此它可以像浏览器窗口一样工作)
已解决:
我在提供以下建议后解决了问题:
class NativeWindow : public wxNativeWindow
{
public:
explicit NativeWindow(wxWindow* parent)
: wxNativeWindow()
{
GtkWidget* widget = SAPI()->SciterCreateWindow(SW_CHILD, NULL, NULL, NULL, this->GetHandle());
g_object_ref_sink(widget);
// remove Sciter's GTK top-level container
// to prevent "Can't set a parent on widget which has a parent"
gtk_container_remove(GTK_CONTAINER(gwindow(widget)), widget);
SAPI()->SciterLoadFile(widget, WSTR("http://linux.org.ru/"));
(void)Create(parent, wxID_ANY, widget);
}
virtual ~NativeWindow()
{
Disown();
}
};
通常情况下,你应该允许你做你需要很少的努力。您可以在widgets示例中找到一个比文档中给出的更完整的使用示例,请参见其。查看wxNativeWindow。它应该给你你需要的一切。文档中有一个示例说明了如何做到这一点。但你为什么需要它?wxWidgets具有wxWebView控件,该控件为开发人员提供Web界面。目前的GSoC有一个项目要在wx中进一步集成JS。Sciter并不是一个真正的浏览器。它是一个很小的库,使用HTML5的子集和带有动画的JavaScript的子集来编写桌面应用程序GUI。与wxWebView不同,浏览器引擎保证在所有平台(Windows、macOS、GTK3、soon iOS和Android)上都是相同的。可以将其视为Qt的QML/QtQuick.Vadim,感谢您的快速回复。在Linux发行版上,我们在包存储库中仍然有wxWidgets 3.0,因为3.1没有标记为稳定。wxNativeWindow出现在3.1中,我将尝试使用wxNativeWindow类中使用的方法,并在明天用结果更新此问题。我认为您应该能够基本上采用
src/gtk/nativewin.cpp
并将其放入您的项目中并与3.0一起使用,因此这是值得尝试的,即使我还没有真正测试过它是否有效。