2011-03-12 32 views
1

错误得到错误对我来说是非常不寻常的.. 没有文件名.. 不正确的行号 错误是: 建筑菜单失败:上线错误1焦炭19:奇字“”” ,预计在gtkmm的代码

文件的属性 '行动' 给值时等号后开放引号登录:examplewindow.h

#ifndef GTKMM_EXAMPLEWINDOW_H 
#define GTKMM_EXAMPLEWINDOW_H 
#include <gtkmm.h> 
class ExampleWindow : public Gtk::Window 
{ 
public: 
ExampleWindow(); 
virtual ~ExampleWindow(); 
protected: 
//Signal handlers: 
virtual void on_menu_file_new_generic(); 
virtual void on_menu_file_quit(); 
virtual void on_menu_others(); 
virtual void on_menu_choices_one(); 
virtual void on_menu_choices_two(); 
//Child widgets: 
Gtk::VBox m_Box; 
Glib::RefPtr<Gtk::UIManager> m_refUIManager; 
Glib::RefPtr<Gtk::ActionGroup> m_refActionGroup; 
Glib::RefPtr<Gtk::RadioAction> m_refChoiceOne, m_refChoiceTwo; 
}; 
#endif //GTKMM_EXAMPLEWINDOW_H 

文件:main.cc

#include <gtkmm/main.h> 
#include "examplewindow.h" 
int main(int argc, char *argv[]) 
{ 
Gtk::Main kit(argc, argv); 
ExampleWindow window; 
//Shows the window and returns when it is closed. 
Gtk::Main::run(window); 
return 0; 
} 

文件:examplewindow.cc

#include "examplewindow.h" 
#include <gtkmm/stock.h> 
#include <iostream> 
ExampleWindow::ExampleWindow() 
{ 
set_title("main menu example"); 
set_default_size(200, 200); 
add(m_Box); // put a MenuBar at the top of the box and other stuff below it. 
//Create actions for menus and toolbars: 
m_refActionGroup = Gtk::ActionGroup::create(); 
//File|New sub menu: 
m_refActionGroup->add(Gtk::Action::create("FileNewStandard", 
G tk::Stock::NEW, "_New", "Create a new file"), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new_generic)); 
m_refActionGroup->add(Gtk::Action::create("FileNewFoo", 
Gtk::Stock::NEW, "New Foo", "Create a new foo"), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new_generic)); 
m_refActionGroup->add(Gtk::Action::create("FileNewGoo", 
Gtk::Stock::NEW, "_New Goo", "Create a new goo"), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_file_new_generic)); 
//File menu: 
m_refActionGroup->add(Gtk::Action::create("FileMenu", "File")); 
//Sub-menu. 
m_refActionGroup->add(Gtk::Action::create("FileNew", Gtk::Stock::NEW)); 
m_refActionGroup->add(Gtk::Action::create("FileQuit", Gtk::Stock::QUIT), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_file_quit)); 
//Edit menu: 
m_refActionGroup->add(Gtk::Action::create("EditMenu", "Edit")); 
m_refActionGroup->add(Gtk::Action::create("EditCopy", Gtk::Stock::COPY), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); 
m_refActionGroup->add(Gtk::Action::create("EditPaste", Gtk::Stock::PASTE), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); 
m_refActionGroup->add(Gtk::Action::create("EditSomething", "Something"), 
Gtk::AccelKey("<control><alt>S"), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); 
//Choices menu, to demonstrate Radio items 
m_refActionGroup->add(Gtk::Action::create("ChoicesMenu", "Choices")); 
Gtk::RadioAction::Group group_userlevel; 
m_refChoiceOne = Gtk::RadioAction::create(group_userlevel, "ChoiceOne", "One"); 
m_refActionGroup->add(m_refChoiceOne, 
sigc::mem_fun(*this, &ExampleWindow::on_menu_choices_one)); 
m_refChoiceTwo = Gtk::RadioAction::create(group_userlevel, "ChoiceTwo", "Two"); 
m_refActionGroup->add(m_refChoiceTwo, 
sigc::mem_fun(*this, &ExampleWindow::on_menu_choices_two)); 
//Help menu: 
m_refActionGroup->add(Gtk::Action::create("HelpMenu", "Help")); 
m_refActionGroup->add(Gtk::Action::create("HelpAbout", Gtk::Stock::HELP), 
sigc::mem_fun(*this, &ExampleWindow::on_menu_others)); 
m_refUIManager = Gtk::UIManager::create(); 
m_refUIManager->insert_action_group(m_refActionGroup); 
add_accel_group(m_refUIManager->get_accel_group()); 
//Layout the actions in a menubar and toolbar: 
Glib::ustring ui_info = 
"<ui>" 
" <menubar name=’MenuBar’>" 
" 
<menu action=’FileMenu’>" 
" 
<menu action=’FileNew’>" 
" 
<menuitem action=’FileNewStandard’/>" 
" 
<menuitem action=’FileNewFoo’/>" 
" 
<menuitem action=’FileNewGoo’/>" 
" 
</menu>" 
" 
<separator/>" 
" 
<menuitem action=’FileQuit’/>" 
" 
</menu>" 
" 
<menu action=’EditMenu’>" 
" 
<menuitem action=’EditCopy’/>" 
" 
<menuitem action=’EditPaste’/>" 
" 
<menuitem action=’EditSomething’/>" 
" 
</menu>" 
" 
<menu action=’ChoicesMenu’>" 
" 
<menuitem action=’ChoiceOne’/>" 
" 
<menuitem action=’ChoiceTwo’/>" 
" 
</menu>" 
" 
<menu action=’HelpMenu’>" 
" 
<menuitem action=’HelpAbout’/>" 
" 
</menu>" 
" </menubar>" 
" <toolbar name=’ToolBar’>" 
" 
<toolitem action=’FileNewStandard’/>" 
" 
<toolitem action=’FileQuit’/>" 
" </toolbar>" 
"</ui>"; 
#ifdef GLIBMM_EXCEPTIONS_ENABLED 
try 
{ 
m_refUIManager->add_ui_from_string(ui_info); 
} 
catch(const Glib::Error& ex) 
{ 
std::cerr << "building menus failed: " << ex.what(); 
} 
#else 
std::auto_ptr<Glib::Error> ex; 
m_refUIManager->add_ui_from_string(ui_info, ex); 
if(ex.get()) 
{ 
std::cerr << "building menus failed: " << ex->what(); 
} 
#endif //GLIBMM_EXCEPTIONS_ENABLED 
//Get the menubar and toolbar widgets, and add them to a container widget: 
Gtk::Widget* pMenubar = m_refUIManager->get_widget("/MenuBar"); 
if(pMenubar) 
m_Box.pack_start(*pMenubar, Gtk::PACK_SHRINK); 
Gtk::Widget* pToolbar = m_refUIManager->get_widget("/ToolBar") ; 
if(pToolbar) 
m_Box.pack_start(*pToolbar, Gtk::PACK_SHRINK); 
show_all_children(); 
} 
ExampleWindow::~ExampleWindow() 
{ 
} 
void ExampleWindow::on_menu_file_quit() 
{ 
hide(); //Closes the main window to stop the Gtk::Main::run(). 
} 
void ExampleWindow::on_menu_file_new_generic() 
{ 
std::cout << "A File|New menu item was selected." << std::endl; 
} 
void ExampleWindow::on_menu_others() 
{ 
std::cout << "A menu item was selected." << std::endl; 
} 
void ExampleWindow::on_menu_choices_one() 
{ 
Glib::ustring message; 
if(m_refChoiceOne->get_active()) 
message = "Choice 1 was selected."; 
else 
message = "Choice 1 was deselected"; 
std::cout << message << std::endl; 
} 
void ExampleWindow::on_menu_choices_two() 
{ 
Glib::ustring message; 
if(m_refChoiceTwo->get_active()) 
message = "Choice 2 was selected."; 
else 
message = "Choice 2 was deselected"; 
std::cout << message << std::endl; 
} 

回答

5

看起来你正在使用你的XML字符串错误的报价。尝试'不是

+0

+1帮助他解决这个愚蠢的问题= p – 2011-03-12 14:46:34

+0

Thanks Alot Erik :-) – 2011-03-13 09:08:38