gpt4 book ai didi

c - 如何在 GTK 的主窗口上居中显示对话窗口?

转载 作者:太空宇宙 更新时间:2023-11-03 23:28:19 25 4
gpt4 key购买 nike

我想打印小的警告信息。为此,我正在创建一个新窗口,并希望它以主窗口为中心。到目前为止,我已尝试使用 gtk_widget_set_parentGTK_WINDOW_POPUPGTK_WINDOW_TOPLEVEL 设置其父项,但没有任何效果。

如何让窗口在主窗口居中?

函数代码如下:

static void pop_warning(char *title, char *text)
{
GtkWidget *warning_window;
GtkWidget *box;
GtkWidget *label;
GtkWidget *button;

warning_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(warning_window), title);
g_signal_connect(GTK_WINDOW(warning_window), "destroy", G_CALLBACK(gtk_widget_destroy), NULL);
gtk_container_set_border_width(GTK_CONTAINER(warning_window), 20);
gtk_window_set_resizable(GTK_WINDOW(warning_window), FALSE);

//window is the main window
gtk_widget_set_parent(warning_window, window);
gtk_window_set_position(GTK_WINDOW(warning_window), GTK_WIN_POS_CENTER_ON_PARENT);

box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);
gtk_container_add(GTK_CONTAINER(warning_window), box);

label = gtk_label_new(text);
gtk_box_pack_start(GTK_BOX(box), label, TRUE, FALSE, 0);

button = gtk_button_new_with_label("Ok");
g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), warning_window);
gtk_box_pack_start(GTK_BOX(box), button, TRUE, FALSE, 0);

gtk_widget_show_all(warning_window);
}

最佳答案

gtk_window_set_position(GTK_WINDOW(warning_window), GTK_WIN_POS_CENTER_ON_PARENT);

只有在你第一次调用时才有效

gtk_window_set_transient_for(GtkWindow *window, GtkWindow *parent);

如文档中明确提及的那样。

您也可以尝试使用没有上述限制的 GTK_WIN_POS_CENTER_ALWAYS - 至少没有根据文档。

关于c - 如何在 GTK 的主窗口上居中显示对话窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21591752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com