c - 如何修复“Gtk-WARNING ** 使用标题栏添加到对话框操作区域的内容”
问题描述
如果我使用 Glade 在 GtkFileChooserDialog 中添加了按钮,我会在终端中收到此警告。
Gtk-WARNING ** Content added to the action area of a dialog using header bars
即使出现该警告,程序似乎也可以正常工作,但是,我想修复警告。
下面的代码是带有一个按钮的简单 GtkWindow。单击按钮时,它将打开对话框有示例代码如何复制此问题:
C代码:
#include <gtk/gtk.h>
//==============================================================Global=variables========================================================================
GtkWidget *FileChooserWindow; //Needed for file open dialog
//==================================Button=stuff==========================
void Button_clicked(GtkWidget* widget, gpointer data)
{
g_print("Clicked\n");
gtk_dialog_run (GTK_DIALOG (FileChooserWindow));
}
int main(int argc, char *argv[])
{
GtkBuilder *builder;
GtkWidget *window;
gtk_init(&argc, &argv);
builder = gtk_builder_new();
gtk_builder_add_from_file (builder, "Resources/GUI_design.glade", NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder, "window_main"));
gtk_builder_connect_signals(builder, NULL);
FileChooserWindow = GTK_WIDGET(gtk_builder_get_object(builder, "FileChooserWindow"));
g_object_unref(builder);
gtk_widget_show(window);
gtk_main();
return 0;
}
// called when window is closed
void on_window_main_destroy()
{
gtk_main_quit();
}
林地设计代码:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.22.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkFileChooserDialog" id="FileChooserWindow">
<property name="can_focus">False</property>
<property name="type_hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">2</property>
<child internal-child="action_area">
<object class="GtkButtonBox">
<property name="can_focus">False</property>
<property name="layout_style">end</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkButton">
<property name="label" translatable="yes">Click me</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</object>
</child>
</object>
<object class="GtkWindow" id="window_main">
<property name="can_focus">False</property>
<property name="default_width">500</property>
<property name="default_height">500</property>
<property name="icon">icon.png</property>
<signal name="destroy" handler="on_window_main_destroy" swapped="no"/>
<child type="titlebar">
<placeholder/>
</child>
<child>
<object class="GtkButton" id="TestButton">
<property name="label" translatable="yes">button</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
<signal name="clicked" handler="Button_clicked" swapped="no"/>
</object>
</child>
</object>
</interface>
解决方案
您可以编辑 ui 存档并在对话框树中添加一个属性
要激活标题栏:
<property name="use-header-bar"> 1 </property>
要停用标题栏:
<property name="use-header-bar"> 0 </property>
推荐阅读
- java - 每次加载页面时,如何使用 Hibernate 将自动增量计数保存在数据库中?
- reactjs - @react-three/fiber 节点模块在 Expo 应用程序中不起作用
- css - 尝试设置输入类型范围的样式,但拇指未设置样式
- javascript - For 循环在 Firefox 上运行良好,但在 Chrome 上不行
- security - 如何在电子邮件中执行回归以确保安全。假设我想验证电子邮件是否属于我的组织域
- c# - C#与TcpClient通信
- python - 当它位于网络驱动器python上时如何将csv写入特定路径
- php - PHP Parse 错误:语法错误,迁移后出现意外的 'endwhile' (T_ENDWHILE)
- testng - 如何使用 TestNG DataProvider (csv) 传递更多参数
- java - 如何在 Maven GitLab CI/CD 管道中将 JaCoCo 报告 HTML 转换为 PDF