LINUX.ORG.RU

Отказываются создаваться страницы wxNotebook

 ,


0

1

имеется arhclinux, wxwidgets, c++ (gcc)
код:
mainwindow.cpp

#include "mainwindow.hpp"

#include <stdexcept>

MainWindow::MainWindow() :
wxFrame( nullptr, wxID_ANY, "WEGA-HPG-cpp-wx" ), mMainPanel( new wxPanel() ),
mTabs( new wxNotebook() ) {
    mMainPanel->SetParent( this );
    mTabs->SetParent( mMainPanel );

    auto panel = new wxPanel();

    mTabs->AddPage( panel, "TAB1" );

    mTabs->Show();
    mMainPanel->Show();
}


mainwindow.hpp
#include <wx/wx.h>
#include <wx/panel.h>
#include <wx/notebook.h>

#include <vector>

class MainWindow : public wxFrame {
public:
    MainWindow();

    ~MainWindow() = default;

private:
    wxPanel *    mMainPanel;
    wxNotebook * mTabs;

    std::vector< wxPanel * > mPanels;
};


main.cpp
#include "ui/mainwindow.hpp"

#include <iostream>
#include <wx/chartype.h>
#include <wx/init.h>
#include <wx/wx.h>

#include <cstdlib>

class HpgApp final : public wxApp {
    bool OnInit() override {
        MainWindow * mainwindow = new MainWindow;
        mainwindow->CreateStatusBar();
        mainwindow->SetStatusText( "HPG status" );
        mainwindow->Show();

        //std::cout << "TEST" << std::endl;

        //SetTopWindow( mainwindow );
        return true;
    }
    //MainWindow mainwindow;
};
//DECLARE_APP( HpgApp )
//IMPLEMENT_APP( HpgApp )
int main( int argc, char ** argv ) {
    [[maybe_unused]] HpgApp * app = new HpgApp;

    wxEntry( argc, argv );
    return EXIT_SUCCESS;
}


при запуске получается
./src/gtk/notebook.cpp(409): assert "m_widget != __null" failed in InsertPage(): invalid notebook
zsh: trace trap (core dumped)  ./src/wega-hpg-cpp-wx


решение: тут и тут

★★

Последнее исправление: safocl (всего исправлений: 1)

Ответ на: комментарий от PhysShell

тут указано что wxWindowID id = wxID_ANY уже по дефолту...

safocl ★★
() автор топика
Ответ на: комментарий от PhysShell

ну в общем как и прямой вызов Create() тоже не возымел успеха

safocl ★★
() автор топика
Ответ на: комментарий от PhysShell

а — все получилось — я вначале не понял про какую сущность ты имеешь ввиду...
получается тут если не указываешь сразу в конструкторе родителя, а создаешь конструктором по умолчанию — надо делать Create(...) у всех сущностей... ппц конечно...

safocl ★★
() автор топика
Ответ на: комментарий от safocl

Есть такое, сумбурно написал, т.к. сам не пользовался ни разу - но раз assert упал, решил посмотреть исходник. Это более-менее понимаемо.

PhysShell ★★
()
Ответ на: комментарий от PhysShell

да — тоже хотел посмотреть если бы ответ не дали нигде...

safocl ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.