GTK + 3 C gtk_label_set_use_markup用于GtkButton + CSS样式

时间:2018-02-27 20:19:00

标签: css gtk3

我正在将基于GTK + 2的应用程序移植到Ubuntu 16上的GTK + 3.我正在尝试为按钮的标签设置标记,但似乎已经弃用了某些东西。这是原始代码:

public interface Collidable {
    boolean checkCollision(Collidable target);
    boolean visit(Collidable collidable);
    boolean accept(Circle circle);
    boolean accept(Line line);
}

public static class CollisionChecks {
    public static boolean check(Circle a, Circle b) { return false; }
    public static boolean check(Circle a, Line b) { return false; }
    public static boolean check(Line a, Line b) { return false; }
}

public class Line implements Collidable {
    @Override
    public boolean checkCollision(Collidable target) {
        return target.visit(this);
    }

    @Override
    public boolean visit(Collidable collidable) {
        return collidable.accept(this);
    }

    @Override
    public boolean accept(Circle circle) {
        return CollisionChecks.check(circle, this);
    }

    @Override
    public boolean accept(Line line) {
        return CollisionChecks.check(this, line);
    }

}

public class Circle implements Collidable {
    @Override
    public boolean checkCollision(Collidable target) {
        return target.visit(this);
    }

    @Override
    public boolean visit(Collidable collidable) {
        return collidable.accept(this);
    }

    @Override
    public boolean accept(Circle circle) {
        return CollisionChecks.check(this, circle);
    }

    @Override
    public boolean accept(Line line) {
        return CollisionChecks.check(this, line);
    }
}
海湾合作委员会现在抱怨GTK_BIN没有成员'孩子'。那么我可以使用另一种技术来做到这一点吗?我真的很难找到任何有用的信息。

与此相关...我也在寻找使用CSS为GTK + 3应用程序设置小部件样式的工作示例。当前的应用程序使用gtk_widget_override_background_color(),现在已弃用。似乎控制颜色的唯一方法是使用CSS,但我似乎无法将各个部分粘合在一起。我需要为不同的小部件设置不同的颜色。

1 个答案:

答案 0 :(得分:0)

经过一番搜索和实验,找到了部分问题的解决方案。只要标签是按钮小部件的唯一子节点,这就可以设置按钮标签的标记:

gtk_label_set_use_markup(GTK_LABEL( gtk_bin_get_child( GTK_BIN(button) ) ), TRUE);

我还没有找到一种方法来使用样式动态控制标签或按钮小部件的背景颜色。