我想用wxWebView填充使用wxWidgets创建的应用程序窗口。在查看了wxWebView示例之后,作者在其中创建了一个wxFrame,然后包含一个wxBoxSizer并将一个wxWebView直接添加到其中。但是我希望我的应用程序使用wxSingleChoiceDialog,据我所知,这意味着我需要包括wxPanel之类的东西以用作对话框的父级(构造函数的第一个参数是wxWindow类型的“父级” )。因此,在我的应用程序中,我在wxFrame中放置了一个wxPanel,然后将wxPanel的wxBoxSizer设置为包括wxWebView。不幸的是,现在wxWebView不再适合整个应用程序窗口,我不确定为什么。这是我尝试创建的应用程序的简化示例。
主文件
#ifndef MAIN_H
#define MAIN_H
#include <wx/wx.h>
class MyApp : public wxApp
{
public:
virtual bool OnInit();
};
DECLARE_APP(MyApp)
#endif
main.cpp
#include "main.h"
#include "mainframe.h"
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
MainFrame *mainFrame = new MainFrame(wxT("Content Creator"));
mainFrame->Show(true);
return true;
}
主机
#ifndef MAINFRAME_H
#define MAINFRAME_H
#include <wx/wx.h>
#include <wx/webview.h>
class MainFrame : public wxFrame
{
public:
wxPanel *panel;
wxBoxSizer *topsizer;
wxMenuBar *menubar;
wxMenu *file;
wxWebView *webView;
wxString editorURL;
MainFrame(const wxString& title);
void initMenu();
void initEditor();
};
#endif
主框架
#include "mainframe.h"
MainFrame::MainFrame(const wxString& title)
: wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(800,600))
{
panel = new wxPanel(this, -1);
topsizer = new wxBoxSizer(wxVERTICAL);
panel->SetSizer(topsizer);
initMenu();
initEditor();
}
void MainFrame::initMenu()
{
menubar = new wxMenuBar;
file = new wxMenu;
//file->Append(wxID_EXIT, wxT("Quit"));
menubar->Append(file, wxT("File"));
SetMenuBar(menubar);
}
void MainFrame::initEditor()
{
editorURL = "file:///C:/Users/kenwood/Desktop/MarkCreator2/ckeditor/samples/editor.html";
webView = wxWebView::New(panel, wxID_ANY, editorURL);
topsizer->Add(webView, 1, wxEXPAND | wxALL, 0);
}
这是此创建的应用程序的屏幕截图:Screenshot
有谁知道我如何能够使wxWebView填充应用程序窗口(或者至少为什么它不适合该窗口,因为我在这里显然缺少了什么)?我意识到我可以创建一个wxWebView,并指定一个等于窗口大小的大小,但是当用户调整屏幕大小时,webview不再与应用程序窗口相同。
谢谢。
编辑:
另外,我正在使用wxWidgets版本2.9.4
编辑2:
看来在initMenu()之前调用initEditor()会产生所需的结果(但反之则不行)。有人知道这是什么原因吗?如果可能的话,我真的很想先调用initMenu()。
最佳答案
您需要将webView
添加到面板大小调整器中。您的问题实际上与wxWebView
没有任何关系,而只涉及布局,我强烈建议(重新)阅读手册的corresponding section。
关于c++ - 用wxWebView填充窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17766358/