如何设置 Fl_Text_Editor 的大小?

Posted

技术标签:

【中文标题】如何设置 Fl_Text_Editor 的大小?【英文标题】:How to set a size of Fl_Text_Editor? 【发布时间】:2021-05-19 14:34:41 【问题描述】:

此时,我的目标是使用 C++ 编写一个简单的文本编辑器。由于我需要我的文本框在我的窗口的inside,所以当我改变我的窗口大小时,它也必须改变它的大小。这是我的代码:

int main(int argc, char **argv) 
   window_main = new Fl_Double_Window(624, 644, "Text editor");
    window_main->labelfont(1);
    window_main->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
     File = new Fl_Menu_Button(0, 0, 69, 20, "File");
      File->labelfont(13);
      File->menu(menu_File);
     // Fl_Menu_Button* File
     File_text = new Fl_Text_Editor(5, 25, 0, 615);
      Fl_Group::current()->resizable(File_text);
     // Fl_Text_Editor* File_text
    window_main->size_range(0, 0, 1280, 660);
    window_main->end();
   // Fl_Double_Window* window_main
  File_text->resize(5, 25, Fl::w - 5, Fl::h - 25);
  window_main->show(argc, argv);
  return Fl::run();

但是我没有在这个类中找到用于调整 Fl_Text_Editor 类的函数。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

对 size_range() 的调用使窗口可调整大小作为副作用(它只告诉 FLTK 窗口的大小范围是多少),您仍然需要调用 resizable() 方法。

我已经修改了您的示例以获得一段工作代码:

#include <FL/Fl.H>
#include <FL/Fl_Menu_Button.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Menu_Item.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Text_Buffer.H>
#include <FL/Fl_File_Chooser.H>

Fl_Text_Buffer *buf;

void cb(Fl_Widget *w, void *data) 
  Fl_File_Chooser *chooser = new Fl_File_Chooser(
      ".", "*.txt,cpp,c", Fl_File_Chooser::SINGLE, "MyDialog");
  chooser->show();
  while (chooser->shown())
    Fl::wait();
  buf->loadfile(chooser->value());


int main(int argc, char **argv) 
  buf = new Fl_Text_Buffer;
  Fl_Menu_Item menu_File[] =  "New", 0, cb, nullptr, nullptr ; 

  Fl_Double_Window *window_main = new Fl_Double_Window(624, 644, "Text editor");
  window_main->labelfont(1);
  window_main->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
  
  Fl_Menu_Button *File = new Fl_Menu_Button(0, 0, 69, 20, "File");
  File->labelfont(13);
  File->menu(menu_File);
  
  Fl_Text_Editor *File_text = new Fl_Text_Editor(5, 25, window_main->w() - 10, 615);
  File_text->buffer(buf);
  
  window_main->size_range(0, 0, 1280, 660);
  window_main->resizable(File_text); // <-- here
  window_main->end();
  window_main->show(argc, argv);
  
  return Fl::run();

【讨论】:

【参考方案2】:

另外,我建议 OP 设置 size_range() 的最小值而不是最大值。通常,窗口内容需要一个最小尺寸,但用户应该可以随意放大窗口,只要他们喜欢并且屏幕尺寸允许。因此,我会将size_range() 语句更改为:

  window_main->size_range(400, 300); // set minimum window size

【讨论】:

以上是关于如何设置 Fl_Text_Editor 的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置每个文件类型的选项卡大小?

python操作word更新目录并设子目录字体大小

intellij idea 如何更改编辑器文本字体和大小

如何设置mysql 数据库列内容区分大小写

word2007如何将页面设置为固定模板,只要新建Word就自动是设定好的模板了?

java中怎么设背景图片透明