我想打印小的警告消息。为了实现这一目标,我正在创建一个新窗口,并希望它位于主窗口的中心。到目前为止,我已经尝试使用 gtk_widget_set_parent
、GTK_WINDOW_POPUP
和 GTK_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/