wxNotebook + Fehler
-
Hallo Leute kann mir jemand bei diesem Fehler helfen?
beim compilieren bekomme ich folgendes Fehler:
/home/stefan/Programmierung/sim/src/sim.cpp:29: error: expected primary-expression before ‘parent’
Also ich verstehe nicht was ich in Zeile 29 bei parent eingeben muss!!
Help und Danke!
#include <wx/wx.h> #include <wx/button.h> #include <wx/combobox.h> #include <wx/notebook.h> #include "sim.h" BEGIN_EVENT_TABLE( simFrame, wxFrame ) EVT_MENU( Menu_File_Quit, simFrame::OnQuit ) EVT_MENU( Menu_File_About, simFrame::OnAbout ) EVT_BUTTON( wxID_Simulieren, simFrame::Simulieren ) END_EVENT_TABLE() IMPLEMENT_APP(simapp) bool simapp::OnInit() { simFrame *frame = new simFrame( wxT( "Hello World" ), wxPoint(50,50), wxSize(32767,32767) ); frame->Show(TRUE); SetTopWindow(frame); return TRUE; } simFrame::simFrame( const wxString& title, const wxPoint& pos, const wxSize& size ) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { wxNotebook *notebook = new wxNotebook (simFrame parent, wxID_Notebook1, wxDefaultPosition, wxSize(300,300)); wxPanel *panel1 = new wxPanel(notebook, wxID_Notebook1); wxPanel *panel2 = new wxPanel(notebook, wxID_Notebook2); wxMenu *menuFile = new wxMenu; menuFile->Append( Menu_File_About, wxT( "&About..." ) ); menuFile->AppendSeparator(); menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) ); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, wxT( "&File" ) ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( wxT( "Wilkommen! Geben Sie bitte alle Daten an!" ) ); } void simFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ) { Close(TRUE); } void simFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) ) { wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this ); }
-
wxNotebook *notebook = new wxNotebook (this, wxID_Notebook1,
Einfach this für die Aktuelle Instanz übergeben.
Und evtl. solltest du dir das Sizerkonzept von wxWidgets ansehen, damit kannst
du das Layout deiner Programme verbessern.
-
Sizerkonzept ?
-
mikey schrieb:
Sizerkonzept ?
Schau dir am besten mal die beiden wxWidgets Tutorials im Magazin an.
In wxWidgets kann man Steuerelemente über Sizer im Fenster anordnen,
so das sie keine Fixeposition haben. Damit können sie z.b. beim vergrößern des Fensters wachsen.
-
OK Danke das werde ich mir aufjeden Fall anschauen!
Der Fehler ist weg!
aber beim "Programm ausführen" kommt folgendes heraus!
./sim Segmentation fault (core dumped) ***Exited with status: 139***
Das Programm startet nicht!
#include <wx/wx.h> #include <wx/button.h> #include <wx/combobox.h> #include <wx/notebook.h> #include "sim.h" BEGIN_EVENT_TABLE( simFrame, wxFrame ) EVT_MENU( Menu_File_Quit, simFrame::OnQuit ) EVT_MENU( Menu_File_About, simFrame::OnAbout ) EVT_BUTTON( wxID_Simulieren, simFrame::Simulieren ) END_EVENT_TABLE() IMPLEMENT_APP(simapp) bool simapp::OnInit() { simFrame *frame = new simFrame( wxT( "Hello World" ), wxPoint(50,50), wxSize(32767,32767) ); frame->Show(TRUE); SetTopWindow(frame); return TRUE; } simFrame::simFrame( const wxString& title, const wxPoint& pos, const wxSize& size ) : wxFrame((wxFrame *)NULL, -1, title, pos, size) { wxNotebook *notebook = new wxNotebook (this, wxID_Notebook1, wxDefaultPosition, wxSize(300,200)); wxPanel *panel1 = new wxPanel(notebook, wxID_Notebook1); wxPanel *panel2 = new wxPanel(notebook, wxID_Notebook1); notebook ->AddPage(panel1, wxT("eins"), true, 0); notebook ->AddPage(panel2, wxT("zwei"), false, 1); wxMenu *menuFile = new wxMenu; menuFile->Append( Menu_File_About, wxT( "&About..." ) ); menuFile->AppendSeparator(); menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) ); wxMenuBar *menuBar = new wxMenuBar; menuBar->Append( menuFile, wxT( "&File" ) ); SetMenuBar( menuBar ); CreateStatusBar(); SetStatusText( wxT( "Wilkommen! Geben Sie bitte alle Daten an!" ) ); } void simFrame::OnQuit( wxCommandEvent& WXUNUSED( event ) ) { Close(TRUE); } void simFrame::OnAbout( wxCommandEvent& WXUNUSED( event ) ) { wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK | wxICON_INFORMATION, this ); }
-
Du solltest für jedes Fenster eine eigene ID vergeben.
Daran könnte es liegen.
-
ne. funktioniert nicht.
Muss an irgendetwas anderes liegen!