GTK+3应用程序基于不同操作系统上的.glade文件
GTK+ 3 applications based on .glade file on different OS
我在C++上编写了一个小型GTK+应用程序,它在使用Gnome 3的Debian x64上运行良好。然而,它在Lubuntu x86上不起作用。所以我编写了一个测试程序,用我的gui.glade文件中的一些小部件创建窗口,它在Lubuntu上不起作用,但在Debian上起作用。测试代码如下:
#include <gtk/gtk.h>
void create_window()
{
GtkBuilder *builder;
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "src/gui.glade", NULL);
gtk_builder_connect_signals (builder, NULL);
GtkWidget *window;
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"));
gtk_window_set_title (GTK_WINDOW (window), "Startup Settings");
g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
gtk_widget_show (window);
}
int main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
create_window();
gtk_main ();
}
我用g++编译它:
g++ -std=c++11 `pkg-config --cflags gtk+-3.0` test.cpp -rdynamic `pkg-config --libs gtk+-3.0`
错误输出:
** (a.out:17864): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
(a.out:17864): Gtk-CRITICAL **: gtk_window_set_title: assertion 'GTK_IS_WINDOW (window)' failed
(a.out:17864): GLib-GObject-WARNING **: invalid (NULL) pointer instance
(a.out:17864): GLib-GObject-CRITICAL **: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
(a.out:17864): Gtk-CRITICAL **: gtk_widget_show: assertion 'GTK_IS_WIDGET (widget)' faile
你可以在这里下载gui.glade。
我刚刚打开我的gui.glade
文件属性,问题变得很明显。默认情况下,Glade需要在您的计算机上安装最新版本的GTK+。我使用的是不稳定的Debian,所以对我来说它是GTK 3.20。当我在稳定的系统上测试它时,它没有工作,因为它上安装了GTK 3.18
为了解决这个问题,我通过Glage更改了我的gui.glade
属性,并将所需的GTK版本降低到3.10。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 将 glade 文件与程序 g++ 链接
- GTK+3应用程序基于不同操作系统上的.glade文件