Gtk# MessageDialog,当消息足够长时如何显示滚动条(设置最大行数)?

问题描述 投票:0回答:1

我用的是Gtk#,不过原理大概和普通的GTK3是一样的。我创建了默认的 GtkApplication,并将以下几行添加到脚手架中以显示带有多行文本的消息对话(示例中为 50)。

问题是当行数过多时,对话窗口会长出屏幕高度,导致下面的按钮不可见。有没有办法让它在消息过长时显示垂直滚动条,并确保对话不会超出屏幕高度?

Gtk.MessageDialog
里有这样的功能吗,还是我必须使用自定义对话窗口?

    private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow"))
    {
        builder.Autoconnect(this);

        DeleteEvent += Window_DeleteEvent;
        _button1.Clicked += Button1_Clicked;

        var lines = new List<string>();
        for (int i = 0; i < 50; i++)
        {
            lines.Add("Line " + i);
        }
        
        var m = new Gtk.MessageDialog(this,
            DialogFlags.Modal,
            MessageType.Warning,
            ButtonsType.Cancel,
            string.Join("\r\n", lines)
        );

        var res = m.Run();
        m.Destroy();
    }
gtk gtk3 gtk#
1个回答
0
投票

我认为

GtkMessageDialog
不存在此功能。如果您想要对话框的特殊行为,您应该使用更通用的
GtkDialog
并允许在其“内容区域”中指定小部件的类型。寻找 相当于 Gtk# 中的
gtk_get_content_area
。此函数返回一个
GtkBox
,您可以在其中打包您想要的任何小部件。你可以在里面打包一些带有滚动条的东西。

在 Gtk3 演示(启动

gtk3-demo
)中寻找“交互式对话框”以查看示例。它也可以在 Gnome 存储库(在 C 中)中获得。

© www.soinside.com 2019 - 2024. All rights reserved.