标签: wxwidgets

如何在 Mac 上正确“安装”wxWidgets

我已经尝试让 wxWidgets 库在我的 Mac 上运行一段时间了,但我遇到了很多问题。我尝试过下载源代码并自己构建并使用 Homebrew。

我已经可以编译以下内容了:

你好世界.hpp:

#include <wx/wxprec.h>
#ifndef WX_PRECOMP
    #include <wx/wx.h>
#endif

class HelloWorldApp : public wxApp {
public:
    virtual bool OnInit();
};

DECLARE_APP(HelloWorldApp)
Run Code Online (Sandbox Code Playgroud)

你好世界.cpp:

#include "helloworld.hpp"


IMPLEMENT_APP(HelloWorldApp)

bool HelloWorldApp::OnInit() {
    wxFrame *frame = new wxFrame((wxFrame*) NULL, -1, _T("Hello wxWidgets World"));
    frame->CreateStatusBar();
    frame->SetStatusText(_T("Hello World"));
    frame->Show(true);
    SetTopWindow(frame);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我用g++ helloworld.cpp `wx-config --cxxflags --libs` -o hello它来编译。这似乎有效,并且 g++ 不会报告任何错误或警告。

然而,一旦我尝试运行它(./hello),我就会收到很多错误,其中大部分是这样的:

objc[92442]: Class wxNSSomething is implemented in both
/usr/local/Cellar/wxmac/3.0.5.1_1/lib/something.dylib (0x10bd00c50)
and /usr/local/opt/wxmac/lib/something.dylib (0x10b329c50). One of …
Run Code Online (Sandbox Code Playgroud)

c++ wxwidgets

2
推荐指数
1
解决办法
3870
查看次数

配置 g++ 以使用 wxwidget 库构建 c++

我一直在尝试在 Linux 中使用 Wxwidget 编译并运行一个简单的 C++ 程序,但是当我构建它时,这就是我尝试构建时得到的结果:

Executing task: g++ -c $(find /home/sopheak/Documents/WXWIDGET/ -type f -iregex '.*\.cpp') -g -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -DWX_PRECOMP -fno-strict-aliasing -pthread -I/usr/local/lib/wx/include/gtk3-unicode-static-3.1/** -Iusr/include/** -I/usr/include/gtk-3.0/** -I/usr/include/at-spi2-atk/2.0/** -I/usr/include/at-spi-2.0/** -I/usr/include/dbus-1.0/** -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include/** -I/usr/include/gio-unix-2.0/** -I/usr/include/cairo/** -I/usr/include/pango-1.0/** -I/usr/include/fribidi/** -I/usr/include/harfbuzz/** -I/usr/include/atk-1.0/** -I/usr/include/pixman-1/** -I/usr/include/uuid/** -I/usr/include/freetype2/** -I/usr/include/libpng16/** -I/usr/include/gdk-pixbuf-2.0/** -I/usr/include/libmount/** -I/usr/include/blkid/** -I/usr/include/glib-2.0/** -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/** -I/usr/include/gtk-3.0/unix-print/** -Wall
  
zsh:1: no matches found: -I/usr/local/lib/wx/include/gtk3-unicode-static-3.1/**
The terminal process "zsh '-c', 'g++ -c $(find /home/sopheak/Documents/WXWIDGET/ -type f -iregex '.*\.cpp') -g -D__WXGTK__ -D_FILE_OFFSET_BITS=64 -DWX_PRECOMP -fno-strict-aliasing -pthread -I/usr/local/lib/wx/include/gtk3-unicode-static-3.1/** -Iusr/include/** -I/usr/include/gtk-3.0/** -I/usr/include/at-spi2-atk/2.0/** -I/usr/include/at-spi-2.0/** -I/usr/include/dbus-1.0/** -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include/** -I/usr/include/gio-unix-2.0/** -I/usr/include/cairo/** …
Run Code Online (Sandbox Code Playgroud)

c++ linux wxwidgets visual-studio-code

2
推荐指数
1
解决办法
1109
查看次数

如何在wxWidgets中创建与Window(操作系统)控制按钮完全相同的控制按钮?

我想创建像 Windows 一样的控制按钮(最小化、最大化和关闭)。

最终目标是创建类似 Microsoft Word 标题栏的东西。

在此输入图像描述

我知道如何创建 wxButton,也知道如何为其设置图标。但是我不知道如何使用本机操作系统图标或主题。

wxButton* closeButton = new wxButton(this, wxID_ANY, "x"); // how to tell that be like OS close button!
Run Code Online (Sandbox Code Playgroud)

在 WinAPI 中,有一个名为DrawThemeBackground的函数,我可以使用它WP_CLOSEBUTTON,但我不知道 wxWidgets 中的等效函数是什么。

更新:在大家的帮助下,这是在 Windows 中绘制本机按钮的示例代码(不适用于其他操作系统)。不幸的是,结果不是我想要的。它看起来像 Win XP 图标。看来wxNativeRenderer 不能正常工作。有人知道修复这段代码吗?(是的,我添加了“wx.rc”资源文件,并且不使用任何清单)

在此输入图像描述

// wxWidgets "Hello World" Program
// For compilers that support precompilation, includes "wx/wx.h".
#include <wx/wxprec.h>
#ifndef WX_PRECOMP
#include <wx/wx.h>
#endif
#include <wx/renderer.h>
#include <wx/artprov.h>
class MyApp: public wxApp
{
public:
  virtual bool OnInit();
};

class MyFrame: public wxFrame …
Run Code Online (Sandbox Code Playgroud)

c++ winapi wxwidgets

2
推荐指数
1
解决办法
1276
查看次数

为什么 wxDC::GetTextExtent() 对于 wxWidgets 中的高 DPI 显示返回相同的值?

我正在尝试使用 wxWidgets 扩展用 c++ 编写的应用程序以实现高 DPI 显示。我遵循官方链接中的指南。到目前为止,除了wxDC::GetTextExtent()函数的返回值之外,一切都工作正常。当我将窗口移动到具有不同 DPI 的显示器时,字体大小会缩放,但 wxDC 的返回值保持与以前相同。但是,如果我使用wxWindow::GetTextExtent(),它会返回正确的值!在文档中,它说所有 wxWidgets API 都使用逻辑像素,但看起来并非如此。

换句话说,如果您尝试在高 DPI 显示器的设备上下文 (dc) 上绘制“文本”,则绘制的文本会很小,因为 wxDC 测量的字体高度值很小(例如不缩放)。然而,wxWindow 绘制的所有其他文本都可以正确缩放。

这种行为是故意的吗?我应该怎么做才能获得正确的值?我正在使用 wxWidgets 3.1.5 和 Win 10。

另外还不清楚 wxWidgets 是使用设备独立像素(DIP)还是逻辑像素?

c++ wxwidgets

2
推荐指数
1
解决办法
392
查看次数

跨平台应用.需要建议

我需要开发一个适用于Mac,Windows和*nix的应用程序.该应用程序将不得不处理大量的数据,并将必须显示大图(因此需要一些2D绘图).我应该去Java吗?wxWidgets的?为每个平台开发一个版本?哦,只是出于好奇,如果我想为网络构建这个应用程序,你认为它会是多么可行?任何建议都非常感谢.

谢谢

java wxwidgets cross-platform

1
推荐指数
1
解决办法
236
查看次数

wxPython全窗口焦点事件

使用wxPython,每当整个窗口进入/失去焦点时,如何触发一个事件?

详细地说,我正在构建一个串行终端GUI,并希望在用户未选择我的应用程序时就关闭连接,并在用户使我的应用程序回到前台时重新打开该连接。我的应用程序只是一个从wx.Frame派生的窗口。

python wxwidgets wxpython

1
推荐指数
1
解决办法
1911
查看次数

如何编译wxsqlite3和sqlite以获得加密支持

我正在开发一个基于wxWidgets的c ++项目.使用wxSqlite3访问sqlite数据库,它工作正常.但我想为数据库添加一些加密,这里我遇到了通过wxSqlite3访问加密数据库的问题.据我所知,sqlite默认不支持加密,但wxSqlite3以某种方式包含加密功能.任何有经验的人,可以分享他们的知识和实践,如何编译sqlite和wxSqlite3,以便能够访问加密功能.提前致谢.

c++ sqlite encryption wxwidgets

1
推荐指数
1
解决办法
8324
查看次数

如何遍历所有wx.CheckBox实例?

我有一个wx框架,我有很多复选框.用户经常在下拉菜单(wx.ComboBox)中更改设置时,我想清除所有复选框.目前,我已经实现了一个方法,当ComboBox发生更改时会调用它并手动清除每个复选框,即:

def ClearCheckBoxes(self):
    self.cb_EnableControl.SetValue(0)
    self.cb_EnableRun.SetValue(0)
    self.cb_EnablePower.SetValue(0)
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

虽然我只有大约10个,但如果是这样的话,我的ClearCheckBoxes方法会更清晰:

def ClearCheckBoxes(self):
    for CheckBox in self.AllCheckBoxes:
        CheckBox.SetValue(0)
Run Code Online (Sandbox Code Playgroud)

另外,我想我可以创建一个列表(即AllCheckBoxes)和所有复选框添加到列表中,我创建它们,那就只能通过列表迭代的问题.但这里的重点是,我想知道是否有预定义的方法来做到这一点.

谢谢

python wxwidgets wxpython

1
推荐指数
1
解决办法
602
查看次数

wxWidgets - 使用单线程进行多任务处理

我有一个GUI应用程序,我用wxWidgets创建.作为功​​能的一部分,我必须在操作GUI窗口的同时运行"任务".例如,我可以运行代码:

long currentTime = wxGetLocalTime();
long stopTime = wxGetLocalTime() + 3;
while (wxGetLocalTime() != stopTime) {}
wxMessageBox("DONE IN APP");
Run Code Online (Sandbox Code Playgroud)

在这3秒的持续时间内,我的应用程序基本上会被冻结,直到显示wxMessageBox.有没有办法让这个在后台运行而不使用多个线程?它为我正在开发的应用程序带来了问题.

我想知道是否有一些类型的事件处理可以使用.非常感谢任何形式的帮助.

c++ multithreading wxwidgets background multitasking

1
推荐指数
1
解决办法
730
查看次数

使用wxDialog :: ShowModal会返回什么

所有:

我不知道在调用Dialog-> ShowModal()之后在wxDialog上单击“ X”会返回什么?

例如:wxDialog * Dialog = wxDialog(NULL,wxID_ANY,title,wxDefaultPosition,wxSize(310,170)); 对话框-> ShowModal();

如果单击标题栏上的X按钮,它将返回什么?如果我调用EndModal()这样的方法怎么办?

谢谢。

wxwidgets

1
推荐指数
1
解决办法
2105
查看次数