- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 FLTK 中,有没有办法让用户在运行时通过拖动小部件框的边框来调整小部件的大小?我的意思是,例如,以我们通常在任何操作系统中调整窗口大小的方式调整 Fl_Text_Display 或 Fl_Box 或 Fl_Pack 的大小?
我浏览了 FLTK 附带的所有演示,并且进行了大量搜索,但只找到了通过代码调整大小或用户通过单击按钮调整大小的示例。我找不到任何指向正确方向的信息,即如何使小部件的边框变得可拖动,以便通过拖动使小部件可调整大小。
最佳答案
您可以探索 Fl_Group 和 Fl_Tile 调整大小的功能,或许可以将它们用作包装器。不幸的是,FLTK 并不支持每个小部件开箱即用,因此您必须自己制作。如果您只需要制作几个自定义小部件,下面的代码将为您提供开始的一般思路:
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Box.H>
#include <FL/fl_draw.H>
#include <cmath>
class Resizeable : public Fl_Box
{
public:
Resizeable(int X, int Y, int W, int H)
: Fl_Box(X, Y, W, H, "Resize Me") {}
private:
bool can_resize;
bool is_on_right_bottom_corner;
void draw()
{
Fl_Box::draw();
fl_rect(x(), y(), w(), h(), FL_RED);
int bottom_right_x = w() + x();
int bottom_right_y = h() + y();
fl_polygon(bottom_right_x - 6, bottom_right_y - 1,
bottom_right_x - 1, bottom_right_y - 6,
bottom_right_x -1, bottom_right_y - 1);
}
int handle(int event)
{
switch (event) {
case FL_PUSH: {
can_resize = is_on_right_bottom_corner;
return 1;
}
case FL_RELEASE:
can_resize = false;
return 1;
case FL_DRAG: {
if (can_resize) {
int X = Fl::event_x();
int Y = Fl::event_y();
int W = X > x() + 1 ? X - x() : w();
int H = Y > y() + 1 ? Y - y() : h();
size(W, H);
parent()->redraw();
}
return 1;
}
case FL_MOVE: {
int dist_right_border = std::abs(x() + w() - Fl::event_x());
int dist_bottom_border = std::abs(y() + h() - Fl::event_y());
is_on_right_bottom_corner = (dist_right_border < 10 && dist_bottom_border < 10);
window()->cursor(is_on_right_bottom_corner ? FL_CURSOR_SE : FL_CURSOR_DEFAULT);
return 1;
}
case FL_ENTER:
return 1;
case FL_LEAVE:
window()->cursor(FL_CURSOR_DEFAULT);
return 1;
}
return 0;
}
};
int main()
{
Fl_Double_Window win(300, 300, "Resize Example");
Resizeable res(50, 50, 100, 40);
win.show();
return Fl::run();
}
关于c++ - FLTK:如何通过拖动使小部件可调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43228493/
所以我有这门课它应该包含我的窗口和我将用作回调的所有函数。 #include #include #include #include #include #include #include
我正在制作一个简单的 FLTK 应用程序(在 Linux 中),它需要在 FL_Window 中显示 PNG 图像。下一段代码: Fl_PNG_Image* pngImg; Fl_Box* boxIm
C++ fltk:我有一个带有 in_box 和 out_box 的窗口,我该如何制作它以便用户可以在 in_box 中键入内容并按回车键,然后继续事件的其余部分。现在窗口刚刚出现并消失了。 Wind
我基本上有一个带有收件箱和输入按钮的窗口。我怎样才能使窗口保持打开和绘制状态,直到用户输入 in_box 并点击回车按钮。 Window w(Point(100,100),200,200, "Cate
我在 FLTK 应用程序 (C++) 上工作,我必须创建要在 Fl_Browser 中设置的名称。基本上这个结构接收一个带有 的“const char*” 浏览器->add("my string.."
我刚刚加入了这个令人惊叹的社区,以获得一个非常烦人的问题的答案。我正在尝试使用 FLTK 创建一个五连胜游戏。目前我刚刚完成它的笨版本井字游戏。所以我的问题是:我用许多按钮创建了一个板。对于井字游戏,
在 FLTK 中,有没有办法让用户在运行时通过拖动小部件框的边框来调整小部件的大小?我的意思是,例如,以我们通常在任何操作系统中调整窗口大小的方式调整 Fl_Text_Display 或 Fl_Box
首先,我回顾了示例test/threads.cxx;但这并不是我正在寻找的用例,因为示例线程函数可以访问 FLTK 函数。 我有一个 libssh2 库函数(我写的,但希望它不依赖于 FLTK),具有
例如,我有 5 个选择组件 Fl_Choice* mySideChoice; mySideChoice = new Fl_Choice(aX, aY, aWidth, aHeight, "Side")
这个问题在这里已经有了答案: What is an undefined reference/unresolved external symbol error and how do I fix it?
我正在尝试使用 FLTK 在 C++ 程序中绘制 xpm 文件。 这是代码 #include #include #include "image.xpm" #include #include #
我正在使用 FLTK要创建 GUI,我必须在屏幕上绘制一些多边形(形状)。 来自他们的 fl_complex_polygon 文档: Start and end drawing a convex fi
问题是:画一个圆角的盒子。定义一个类Box,由四条线和四条弧组成。所以我为该练习编写了以下代码: #include Simple_window win(Point(100,100), 600,400
我正在使用 FLTK。我有一个带有各种按钮的窗口,用户可以单击它们来执行某些操作。在我的 int main() 中,我有一个 switch 语句来处理所有这些。当用户单击退出时,switch 语句设置
我是 C++ 的初学者,正在学习 Stroustrup 的 - Programming Principles and Practice using C++。第12章介绍了显示模型,任务是在系统上安装并
我有一个带有弹出菜单的单线程 FLTK 应用程序,使用 Fluid 创建。我有一个子类 Fl_Gl_Window 并实现了一个 handle() 方法。 handle() 方法调用一个函数,该函数在右
我在iOS Mojave 10.14.6上使用FLTK库(版本1.3.5):我编写了这个简单程序 #include #include #include #include #include #
我正在尝试在 fltk 中创建一个程序,我遵循了这个例子 #include #include #include int main(int argc, char **argv) { Fl_Wi
我正在使用 Fltk 渲染 openGL 图形。目前我正在调试一个由堆排序函数排序的全局数组。我的目的是在堆排序函数中的每次元素交换之后查看元素的图形交换。但我不想每次在交换并在断点处等待后需要重绘时
我有一个在 Visual Studio 中完成的 FLTK 项目,它编译得非常好。但是当我使用 g++ 编译它时,它给了我这个错误: Undefined f
我是一名优秀的程序员,十分优秀!