【发布时间】:2021-06-30 13:16:55
【问题描述】:
首先对不起我的英语,它不是我的母语
我是 c++ 的 wxWidgets 的初学者,我开始开发一个带有进度条和一些后台进程的简单应用程序
不幸的是,当我调用 wx_MyGauge->SetValue(20) 时,出现异常“wx_MyGauge was nullptr”
这只发生在构造函数之外,如果我从构造函数调用该函数,则可以正常工作
我做错了什么?
//标题
#pragma once
#include "wx/wx.h"
class testGauge : public wxFrame
{
public:
testGauge();
~testGauge();
wxGauge* wx_MyGauge;
wxPanel* pnl;
void Importar(wxMouseEvent& event);
};
//cpp
#include "testGauge.h"
testGauge::testGauge() : wxFrame(nullptr, wxID_ANY, "blabla", wxDefaultPosition, wxSize(500, 400))
{
pnl = new wxPanel(this, wxID_ANY, wxPoint(10, 10), wxSize(500, 400));
wx_MyGauge= new wxGauge(pnl, 1001, 100, wxPoint(10,10), wxSize(100,20), wxGA_HORIZONTAL);
wx_MyGauge->SetValue(10);// here OK
wxButton* btn = new wxButton(pnl,wxID_ANY,"Teste",wxPoint(10,30),wxSize(50,30));
btn->Connect(wxEVT_LEFT_UP, wxMouseEventHandler(testGauge::Importar));
this->Layout();
this->Centre(wxBOTH);
}
void testGauge::Importar(wxMouseEvent& WXUNUSED(event))
{
testGauge::wx_MyGauge->SetValue(20);// here Error
}
testGauge::~testGauge()
{
}
在 Windows 10、Visual Studio 2019、wxWidgets 3.1.5 上工作
【问题讨论】:
-
您可以尝试在连接、布局和中心之后的每一步之后设置仪表的值,看看哪一个可能正在删除它;或者如果是。您还可以在指针上设置手表。