- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了一个继承自wxDialog的类。我目前在 Ubuntu 12.04 上,使用 Code::Blocks 和 gcc 4.6。在我将此类包含在项目中之前,我的应用程序工作正常:调试和发布配置给出相同的错误。这是代码:
头文件
#ifndef EBCDIALOG_H
#define EBCDIALOG_H
#include <wx/dialog.h>
#include <wx/sizer.h>
#include <wx/textctrl.h>
#include <wx/button.h>
class EBCDialog : public wxDialog
{
public:
EBCDialog(wxWindow* parent, wxWindowID id, const wxString& title );
~EBCDialog();
void OnOK(wxCommandEvent& event);
private:
DECLARE_CLASS(EBCDialog)
DECLARE_EVENT_TABLE()
};
#endif //EBCDIALOG_H
Cpp文件:
#include "EBCDialog.h"
EBCDialog::EBCDialog(wxWindow* parent, wxWindowID id, const wxString& title ) : wxDialog(parent, id, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
{
wxBoxSizer* topSizer = new wxBoxSizer(wxVERTICAL);
// Create text ctrl with minimal size 100x60
topSizer->Add(new wxTextCtrl(this, wxID_ANY, wxT("test"), wxDefaultPosition, wxSize(100,60)),
1, // make vertically stretchable
wxEXPAND| // make horizontally stretchable
wxALL, // and make border all around
10); // set border width to 10
wxBoxSizer* buttonSizer = new wxBoxSizer( wxHORIZONTAL );
buttonSizer->Add(new wxButton(this, wxID_OK, _T("OK")),
0, // make horizontally unstretchable
wxALL, // make border all around: implicit top alignment
10); // set border width to 10
buttonSizer->Add(new wxButton(this, wxID_CANCEL, _T("Cancel")),
0, // make horizontally unstretchable
wxALL, // make border all around (implicit top alignment)
10); // set border width to 10
topSizer->Add(buttonSizer,
0, // make vertically unstretchable
wxALIGN_CENTER ); // no border and centre horizontally
SetSizer( topSizer ); // use the sizer for layout
topSizer->Fit( this );
// fit the dialog to the contents
topSizer->SetSizeHints( this ); // set hints to honor min size
}
EBCDialog::~EBCDialog()
{
}
void EBCDialog::OnOK(wxCommandEvent& event)
{
}
BEGIN_EVENT_TABLE(EBCDialog, wxDialog)
EVT_BUTTON(wxID_OK, EBCDialog::OnOK)
END_EVENT_TABLE()
这是代码:: block 日志:
g++ -Wall -I/usr/lib/i386-linux-gnu/wx/include/gtk2-unicode-debug-2.8 -I/usr/include/wx-2.8 -D_FILE_OFFSET_BITS=64 -D_LARGE_FILES -D_WXDEBUG_ -D_WXGTK_ -pthread -O2 -I"/home/angelo/CodeBlocks/Event Bus Configurer/include" -I"/home/angelo/CodeBlocks/Event Bus Configurer/bitmaps" -c "/home/angelo/CodeBlocks/Event Bus Configurer/src/EBCDialog.cpp" -o obj/src/EBCDialog.o g++ -o "bin/Event Bus Configurer" obj/src/EBCApp.o obj/src/EBCDialog.o obj/src/EBCFrame.o obj/src/EBCList.o obj/src/HandlerFile.o -L/usr/lib/i386-linux-gnu -pthread -Wl,-Bsymbolic-functions -Wl,-z,relro -L/usr/lib/i386-linux-gnu -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8 -s obj/src/EBCDialog.o:(.rodata._ZTV9EBCDialog[vtable for EBCDialog]+0x8): undefined reference to `EBCDialog::GetClassInfo() const' collect2: ld returned 1 exit status Process terminated with status 1 (0 minutes, 2 seconds) 1 errors, 0 warnings
感谢任何帮助,谢谢!
最佳答案
从您的代码中删除 DECLARE_CLASS(EBCDialog),基类 wxDialog 已经为您完成了。
来自documentation :
wxWidgets uses its own RTTI ("run-time type identification") system which predates the current standard C++ RTTI and so is kept for backwards compatibility reasons but also because it allows some things which the standard RTTI doesn't directly support (such as creating a class from its name).
The standard C++ RTTI can be used in the user code without any problems and in general you shouldn't need to use the functions and the macros in this section unless you are thinking of modifying or adding any wxWidgets classes.
关于c++ - 链接从 wxDialog 继承的类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13035285/
我在 Linux 上使用 wxDialog 对象时遇到问题在对象的构造器中,我传递了相关的样式标志 (wxCAPTION|wxMINIMIZE_BOX|wxMAXIMIZE_BOX|wxCLOSE_B
我写了一个继承自wxDialog的类。我目前在 Ubuntu 12.04 上,使用 Code::Blocks 和 gcc 4.6。在我将此类包含在项目中之前,我的应用程序工作正常:调试和发布配置给出相
我正在创建我自己的 wxDialog 子类,它在用作无模式对话框时效果很好,如下所示: AddDialog newAddDialog = new AddDialog(this, wxID_ANY, _
我有大量使用 wxWidgets 的现有代码。主窗口是wxDialog。现在我必须向该对话框添加一个 wxMenuBar。但是,为了做到这一点,窗口应该派生自 wxFrame。 是否可以将 wxMen
如上图所示.. 我在 wxWidgets 中创建了一个 wxDialog。用户可以单击"is"或“否”。单击任一按钮后,将打开一个标准对话框,给出一条简单消息(覆盖成功或覆盖取消) 单击"is"或“否
我的 wxWidgets 程序应该可以在桌面 PC 和 Windows 平板电脑上运行。两者均使用 Windows 10 Pro 64 位版本。我怎样才能使大小不断变化的文本无论在对话框中显示在何处?
这是我的布局: 我有一个包含网格(比例为 1)和确定/取消按钮栏的 sizer 所有的东西都在一个 wxDialog 中 这里是: ||||||||||||||| | | |
我是 C++ 新手,也是 Codelite 新手,也是 wxCrafter 新手。我正在尝试构建一些 GUI 应用程序,但我对 C++ 中的对象传递感到困惑。我花了几个小时,我才明白一点。首先,要在
和上次类似的问题。我运行代码,退出它。 GUI 消失了,它似乎已经完全退出,但我检查了我的进程列表,代码仍然保留在内存中。 我已经将它缩小到对 wxFileDialog 的调用。我不明白我做错了什么,
是否有可能使 wxFrame 对象表现得像模态对话框,因为创建 wxFrame 对象的窗口会停止执行,直到 wxFrame 对象退出? 我正在研究 small game并遇到了以下问题。我有一个托管主
这似乎是windows特有的,这里有一个重现效果的例子: import wx def makegrid(window): grid = wx.GridSizer(24, 10, 1, 1)
我的程序打开一个基于 wxFrame 的窗口和多个基于 wxDialog 的无模式和无父窗口。除了基于 wxDialog 的窗口坚持始终位于基于 wxFrame 的窗口之上之外,这一切都运行良好。 我
我是一名优秀的程序员,十分优秀!