【发布时间】:2016-11-25 05:10:23
【问题描述】:
我使用 glade 设计器制作了一个 GUI,并将功能封装在一个类中。这是我编写的类定义:
#ifndef _CLIPSWINDOW_H
#define _CLIPSWINDOW_H
#include <gtkmm.h>
class ClipsWindow : public Gtk::Window
{
public:
ClipsWindow(BaseObjectType * cobject, const Glib::RefPtr<Gtk::Builder> &refGlade);
~ClipsWindow();
protected:
Glib::RefPtr<Gtk::Builder> builder;
//MainWindow
Gtk::Window *main_window;
// Control buttons.
Gtk::Button *agenda_btn; // buttons to contain the control buttons in the GUI.
Gtk::Button *fact_btn;
Gtk::Button *run_btn;
Gtk::Button *reset_btn;
// Menu options.
//Gtk::MenuButton *options; // Get the options menu
Gtk::MenuItem *load_item; // Menu items for the "Options menu"
Gtk::MenuItem *save_item;
Gtk::MenuItem *change_strategy_item;
//Gtk::MenuButton *help;
Gtk::MenuItem *about_item; // Menu item for the "Help Menu"
// signal handlers for buttons.
void on_agendabtn_clicked();
void on_factbtn_clicked();
void on_runbtn_clicked();
void on_resetbtn_clicked();
// signal handlers for menu items.
void on_load_activate();
void on_StrategyOption_activate();
void on_SaveOption_activate();
void AboutItem_activate_cb();
};
#endif
主函数如下所示:
Gtk::Main kit(argc,argv);
//auto app = Gtk::Application::create(argc, argv, "clipsgui.clemson.edu");
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("clipswindow.glade");
ClipsWindow *cw = 0;
builder->get_widget_derived("main_window", cw);
kit.run(*cw);
我已经注意将底层 Cobject 传递给 Gtk::Window 的构造函数。当我尝试使用命令g++ main_app.cpp -o mainpkg-config --cflags --libs gtkmm-3.0 编译此程序时,我得到一个.pthread 文件,或者在尝试单独编译文件时,错误是`gtkmm no这样的文件或目录。但是,我通过创建一个小型驱动程序测试了 gtkmm,它编译得很好。知道我可能做错了什么吗?
谢谢。
编辑:here 是我的项目的 github 存储库。构建clipswindow.o 时出现小错误,但错误仍然存在。
【问题讨论】:
-
因为我无法重现您的错误。不完整的代码,不知道你是如何真正编译你的代码的。只能进行猜测,并在猜测时检查您对 g++ 的选择。
-
我已经为我的代码添加了 github repo。请看一下?你是如何编译程序的?