- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 GTK+2 程序,它结合了 GtkScrolledWindow 和 GtkLayout。效果很好。但是,我发现如果我将 GtkEvent 对象放入 GtkLayout,它将无法正常显示。有人知道为什么吗?谢谢。
#include <gtk/gtk.h>
int main( int argc, char *argv[] )
{
GtkWidget *window, *button, *layout, *eventbox, *scrollwindow;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (window, 150, 150);
button = gtk_button_new_with_label ("button");
layout = gtk_layout_new(NULL, NULL);
gtk_layout_set_size( GTK_LAYOUT(layout), 300, 300);
scrollwindow = gtk_scrolled_window_new(GTK_LAYOUT(layout)->hadjustment, GTK_LAYOUT(layout)->vadjustment);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_layout_put( GTK_LAYOUT(layout), button, 50, 250 );
/* uncomment to use eventbox
eventbox = gtk_event_box_new();
gtk_container_add( GTK_CONTAINER(eventbox), layout);
gtk_scrolled_window_add_with_viewport( GTK_SCROLLED_WINDOW(scrollwindow), eventbox);
*/
// comment this line when use eventbox
gtk_container_add( GTK_CONTAINER(scrollwindow), layout);
gtk_container_add((GtkContainer*)window, scrollwindow);
gtk_widget_show_all(window);
gtk_main ();
return 0;
}
最佳答案
我发现这里不必使用GtkEventBox。 GtkLayout可以直接捕获事件。
以下小部件没有关联的窗口。所以,如果你想捕获事件,它应该与GtkEventBox一起使用。
GtkAlignment
GtkArrow
GtkBin
GtkBox
GtkImage
GtkItem
GtkLabel
GtkPaned
GtkPixmap
GtkScrolledWindow
GtkSeparator
GtkTable
GtkViewport
GtkAspectFrame
GtkFrame
GtkVPaned
GtkHPaned
GtkVBox
GtkHBox
GtkVSeparator
GtkHSeparator
固定程序:
#include <gtk/gtk.h>
static gboolean button_press_event( GtkWidget *widget, GdkEventButton *event ) {
if (event->button == 1 ) printf("but down %i , %i\n", (int)event->x, (int)event->y);
return TRUE;
}
int main( int argc, char *argv[] )
{
GtkWidget *window, *button, *layout, *eventbox, *scrollwindow;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (window, 150, 150);
button = gtk_button_new_with_label ("button");
layout = gtk_layout_new(NULL, NULL);
gtk_layout_set_size( GTK_LAYOUT(layout), 300, 300);
scrollwindow = gtk_scrolled_window_new(gtk_layout_get_hadjustment(layout), gtk_layout_get_vadjustment(layout));
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_layout_put( GTK_LAYOUT(layout), button, 50, 250 );
gtk_container_add( GTK_CONTAINER(scrollwindow), layout);
gtk_container_add(GTK_CONTAINER(window), scrollwindow);
g_signal_connect (layout, "button_press_event", G_CALLBACK (button_press_event), NULL);
gtk_widget_set_events(layout, GDK_EXPOSURE_MASK
| GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK
| GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK);
gtk_widget_show_all(window);
gtk_main ();
return 0;
}
关于c - 如何在滚动窗口布局中添加 GtkEventBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47935229/
我有一个 GTK+2 程序,它结合了 GtkScrolledWindow 和 GtkLayout。效果很好。但是,我发现如果我将 GtkEvent 对象放入 GtkLayout,它将无法正常显示。有人
此代码创建了一个程序,该程序创建一个带有标签的窗口,如果您单击该标签,该程序将执行作为 g_signal_connect(G_OBJECT(eventbox), "button_press_event
在 GTK 对话框中,我将 GtkLabel 包裹在 GtkEventBox 中,以便它可以接收点击事件(导航到网页以获取更多信息)。从功能上讲,它工作得很好。 但是,当我将标签添加到事件框时,标签的
我有一个包含 2 个项目的 GtkHBox。在里面,在左边,我有一个包含 4 个项目的 GtkHBox。前两个是 GtkEventBox,然后是 GtkHScale,最后是 GtkLabel。 两个
我想在 GtkEventBox 中设置 GtkWindow 的不透明度。 gtk_event_box_set_visible_window(GTK_EVENT_BOX(eventbox), TRUE)
我正在尝试通过 Glade 将 GtkEventBox 的 enter-notify-event 连接到附加的 GAction。使用 GtkInspector 检查正在运行的应用程序显示没有任何连接到
使用 GTK,我试图在 GtkScrolledWindow< 中包含的 GtkTextView 的一角覆盖“更多”提示(但它也可以是任何绘图对象)/。我在处理程序中为 TextView 的 expos
我是一名优秀的程序员,十分优秀!