c++ - 滚动一个非常大的 GtkDrawingArea

标签 c++ c gtk gtk2

我有一个用于可视化数据的 GtkDrawingArea。 根据数据库和用户输入,绘图可能会变得非常大(大于允许的最大 GtkDrawingArea 大小)。因此,我想使用与当前窗口一样大的绘图区域,并在滚动时手动更新它。

如果我使用 ScrolledWindow + Viewport 方法向绘图区域添加滚动条,它显然不起作用,因为绘图区域不够大,不需要滚动条。

有什么方法可以让视口(viewport)认为底层小部件比实际大吗? 如果不是,解决此问题的最佳方法是什么?

注意:我使用的是 Gtk2,不可能切换到 Gtk3。

最佳答案

您需要继承 GtkDrawingArea 并覆盖 set_scroll_adjustments 信号。 GtkWidget docs

在此信号中,您将获得滚动窗口的调整。几年前我写了一些代码,你可以看看如何实现它。

MarlinSampleView code

这段代码能够假装小部件有数百万像素宽,而实际上它并不比窗口大。

关于c++ - 滚动一个非常大的 GtkDrawingArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15411792/

相关文章:

c++ - 使用 volatile 标准模板对象的方法

c - 在给定的 BST 中找到最大子树,使其没有重复项

我可以在 C 程序中使用面向对象的头文件吗

c - 什么类型的连接更好地用于 redis?

c - 如何在 GTK3+、Glade 中按名称查找对象/小部件

c++ - C++ 标准的第 3 方库

c++ - 在 C++ 中复制大型容器的最佳方法

c - 如何禁用 GtkColorButton?

C++ 类模板复制构造函数返回类型

linux - webkit如何找到libflashplayer.so?