Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Katsushiro 29 Srpna 2013, 12:47:54
-
Tak se mi na linuxech podařilo nainstalovat WxWidgets - chtěl jsem si vyzkoušet, jak to vypadá, když se zobrazí klasická hláška Hello, World. Našel jsem tenhle kód:
/*
* hworld.cpp
* Hello world sample by Robert Roebling
*/
// Collapse | Copy Code
// file name: hworld.cpp
//
// purpose: wxWidgets "Hello world"
//
// For compilers that support precompilation,
// includes "wx/wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/wx.h"
#endif
class MyApp: public wxApp
{
virtual bool OnInit();
};
class MyFrame: public wxFrame
{
public:
MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
};
enum
{
ID_Quit = 1,
ID_About,
};
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(ID_Quit, MyFrame::OnQuit)
EVT_MENU(ID_About, MyFrame::OnAbout)
END_EVENT_TABLE()
IMPLEMENT_APP(MyApp)
bool MyApp::OnInit()
{
MyFrame *frame = new MyFrame(_T("Hello World"), wxPoint(50,50), wxSize(450,340) );
frame->Show(TRUE);
SetTopWindow(frame);
return TRUE;
}
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
: wxFrame((wxFrame *)NULL, -1, title, pos, size)
{
wxMenu *menuFile = new wxMenu;
menuFile->Append(ID_About, _T("&About...") );
menuFile->AppendSeparator();
menuFile->Append( ID_Quit, _T("E&xit" ));
wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append( menuFile, _T("&File" ));
SetMenuBar( menuBar );
CreateStatusBar();
SetStatusText( _T("Welcome to wxWindows!") );
}
void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
{
Close(TRUE);
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
wxMessageBox(_T("This is a wxWindows Hello world sample"),
_T("About Hello World"), wxOK | wxICON_INFORMATION, this);
}
Fór je ale v tom, že vidím jen http://www.2i.cz/uploaded/33f0c1eb38.png (http://www.2i.cz/uploaded/33f0c1eb38.png) a nějaké menu (spíše tlačítko File) se prostě nezobrazí :D Netušíte proč?
Moc díky za rady ;-)
-
Tak problém bude na vaší straně. Zkompiloval jsem ukázkový kód takto :
g++ `wx-config --cppflags` hallo.cpp `wx-config --libs`
A výsledek je, že se objeví formulář s menu File, které má položky About a Exit :
(http://xstranky.sweb.cz/WxWidgets.png)
Není problém například s verzí WxWidgets? Mám tam verzi 2.8. Jinak jazyk C a C++ opravdu nemám rád. ;)
Edit : Není ještě problém s tím novým horním "Mac" menu pro všechny programy? Jinak kompilováno to bylo na Ubuntu 12.04.
Edit2 : Tady je obrázek vašeho výsledku :
(http://xstranky.sweb.cz/WxWidgets_nw.png)
-
Tak jsem ještě něco dál našel, je to bug :
WxWidgets apps don't have menus
https://bugs.launchpad.net/ubuntu/+source/wxwidgets2.8/+bug/662077
Je tam popsaný i workaround :
export UBUNTU_MENUPROXY=0
audacity
Edit : V poslední verzi wxwidgets by ten bug neměl být -> this bug was fixed in the package wxwidgets2.8 - 2.8.11.0-0ubuntu7
-
Sice opožděně, ale přesto moc děkuju. Místo WxWidgets, které mi dělaly problémy ve více věcech jsem nakonec přesedlal na Qt, ale snad to pomůže někomu jinému, trpělivějšímu, než jsem já :D