Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: WxWidgets - nezobrazuje se menu u Hello world [vyřešeno]  (Přečteno 2248 krát)

Katsushiro

  • Návštěvník
  • Příspěvků: 56
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:
Kód: [Vybrat]
/*
 * 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 a nějaké menu (spíše tlačítko File) se prostě nezobrazí :D Netušíte proč?

Moc díky za rady ;-)
« Poslední změna: 14 Září 2013, 23:58:40 od Katsushiro »

Nemo7

  • Aktivní člen
  • *
  • Příspěvků: 163
Re:WxWidgets - nezobrazuje se menu u Hello world
« Odpověď #1 kdy: 03 Září 2013, 13:49:39 »
Tak problém bude na vaší straně. Zkompiloval jsem ukázkový kód takto :
Kód: [Vybrat]
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 :


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 :

« Poslední změna: 03 Září 2013, 13:57:08 od Nemo7 »

Nemo7

  • Aktivní člen
  • *
  • Příspěvků: 163
Re:WxWidgets - nezobrazuje se menu u Hello world
« Odpověď #2 kdy: 03 Září 2013, 14:09:33 »
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 :
Kód: [Vybrat]
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
« Poslední změna: 03 Září 2013, 14:11:31 od Nemo7 »

Katsushiro

  • Návštěvník
  • Příspěvků: 56
Re:WxWidgets - nezobrazuje se menu u Hello world
« Odpověď #3 kdy: 14 Září 2013, 23:58:24 »
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

 

Provoz zaštiťuje spolek OpenAlt.