小编Sim*_*mme的帖子

有时候GTK模态对话框不是模态的 - bug或功能?

当我在GTK中创建一个自定义对话框(GTK2或GTK3)并将其设置为模态时,我的应用程序的其他窗口的所有输入都将被忽略.这几乎总是有效,但在某些条件下会失败.

当我将包含TreeView的ScrolledWindow添加到我的对话框时,它仍然可以正常工作.但是,如果我用条目填充TreeView,直到ScrolledWindow开始显示其滚动条 - 模态突然丢失,我可以点击我的其他窗口!

这是我能够设置的最基本的例子.它是用Vala编写的,但你会明白这个想法:

class MyDialog: Gtk.Dialog {

    public MyDialog() {
        this.modal = true;

        var data = new Gtk.ListStore(1, typeof(string)); 

        // increase this number -- the dialog is not modal anymore!
        for (int i=0; i<2; ++i) {
            Gtk.TreeIter current;
            data.append(out current);
            data.set(current, 0, "Lorem Ipsum"); 
        }

        var render = new Gtk.CellRendererText();

        var column = new Gtk.TreeViewColumn();
            column.pack_start(render, true);
            column.add_attribute(render, "text", 0);

        var treeview = new Gtk.TreeView.with_model(data);
            treeview.append_column(column);
            treeview.show();

        var scroll = new Gtk.ScrolledWindow(null, null);
            scroll.set_size_request(100, …
Run Code Online (Sandbox Code Playgroud)

gtk modal-dialog vala

37
推荐指数
1
解决办法
1716
查看次数

如何创建和加载GTK模块?

我想创建一个自定义GTK模块,当我启动GTK应用程序时应该加载它.

关于这个主题的文档是罕见的,我搜索了很多,但我没有让它运行.我在使用GTK3的Ubuntu Linux上尝试使用sofar:

  • 使用void gtk_module_init(gint *argc, gchar ***argv[])内部方法编译并链接共享库.据我所知,这应该足以创建一个简单的模块.完整代码:
#include <iostream>
#include <gtk/gtk.h>

void gtk_module_init(gint *argc, gchar ***argv[]) {
    std::cout << "huhu" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
  • 将此lib放入/usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libtest-gtk-module.so
  • 试图启动这样的应用程序:gnomine --gtk-module=libtest-gtk-module.so但我得到的是:Gtk-Message: Failed to load module "libtest-gtk-module.so"

那么还有什么方法可以让GTK加载这个库?

提前谢谢了!

gtk module

8
推荐指数
1
解决办法
2049
查看次数

标签 统计

gtk ×2

modal-dialog ×1

module ×1

vala ×1