我试图在fltk中创建一个程序,并且我遵循了此示例
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(340,180);
Fl_Box *box = new Fl_Box(20,40,300,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labelsize(36);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
来自FLTK docs。问题是我试图在窗口上绘制多个矩形形状,创建多个装箱以具有多个矩形似乎非常繁琐。我尝试查找许多关于在FLTK上绘制形状的教程,但找不到足够简单的东西来展示给我看。
到目前为止,我的代码看起来像这样
#include <FL/Fl.H>
#include <FL/Fl_Widget.H>
#include <FL/Fl_Window.H>
// #include <FL/fl_draw.H>
#include <iostream>
int main() {
Fl_Window *window = new Fl_Window(900, 600);
window->position(0, 0);
window->color(FL_BLACK);
window->end();
window->show();
while (1) {
int ev = Fl::event();
if (ev == FL_SHORTCUT) {
if (Fl::event_key() == FL_Escape)
break;
}
Fl::check();
}
return 0;
}
,我想在循环内(连续)实现图形。
答案 0 :(得分:1)
作为一个重要的注意事项:您应该真正考虑使用File file = new File(csvFile);
CsvReader csvReader = new CsvReader();
try (CsvParser csvParser = csvReader.parse(file, StandardCharsets.UTF_8)) {
CsvRow row;
while ((row = csvParser.nextRow()) != null) {
if (!orderProductMap.containsKey(row.getField(0))) {
orderProductMap.put(row.getField(0), new HashSet<>());
}
((Set) orderProductMap.get(row.getField(0))).add(row.getField(1));
}
}
而不是自定义的while循环,我遇到了许多类似方法的问题,例如您的方法。
现在,回答您的问题:
以该示例为例,将Box创建内容包装在一个循环中。例如,您可以使用一个索引来为每个Box分配不同的位置。
Fl::run()
您可以在“构造器”框中使用公式#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(340,500);
// 3 Fl_Boxes in a loop
for (int i = 0; i < 3; ++i) {
Fl_Box *box = new Fl_Box(20, 40 + i*120, 300, 100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labelsize(36);
box->labeltype(FL_SHADOW_LABEL);
}
window->end();
window->show(argc, argv);
return Fl::run();
}
控制布局。您必须根据自己的需求进行调整。
使用FLTK时,一个基本规则是:在窗口构造函数和20, 40 + i*120, 300, 100
之间初始化的所有窗口小部件,或工作方式相同的任何其他窗口小部件,例如window->end()
,都将成为周围元素的子元素,并且将显示(如果显示了他们的父母)。
如果您要寻找Fl_Group
,我不确定。我发现Erco's FLTK Cheat Page非常有用。您可能会在那里找到解决问题的灵感和其他方法。