首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GTK+/ C++ gtk_label/ gtk_textview文本大小调整

GTK+/ C++ gtk_label/ gtk_textview文本大小调整
EN

Stack Overflow用户
提问于 2016-05-14 18:01:03
回答 1查看 926关注 0票数 2

在左边窗口的附加图像中,我有一个Ubuntu控制台,它包含文件的内容,而在右边的窗口,我的GTK+程序中有相同文件的内容。问题是,我希望我的GTK+程序在Ubuntu控制台上准确地显示文件。

我已经尝试通过将单行添加到单个gtk_label并将该标签添加到垂直框中来显示它,但结果是一样的。

问题

有没有办法使我的gtk程序具有与Ubuntu控制台相同的大小/外观?

以下是代码:

代码语言:javascript
复制
void Zarzadzanie::Wykonaj(GtkWidget* widget, GtkWidget* data)
{
  string buffer;
  string n="";
  GtkWidget *dialog, *label, *vbox, *window2,*viewer;



  //Creating my dialog
  dialog=gtk_dialog_new_with_buttons("Polaczenia sieciowe",GTK_WINDOW(gtk_widget_get_toplevel(data)), GTK_DIALOG_MODAL, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,GTK_STOCK_REFRESH,
                                           GTK_RESPONSE_OK, NULL );
  vbox=gtk_vbox_new(0,0); //creating new vbox
  window2=gtk_scrolled_window_new(0,0); //creating new scrolled window
  gtk_button_set_label(GTK_BUTTON(gtk_dialog_get_widget_for_response(GTK_DIALOG(dialog),GTK_RESPONSE_CLOSE)),"Zamknij Okno"); //setting label in dialog
  gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(window2),400); //setting min height in scrollable window
  gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(window2),700); //setting min width in scrollable window


  viewer=gtk_text_view_new(); //creating new textview
  gtk_text_view_set_editable(GTK_TEXT_VIEW (viewer), FALSE); //setting textview to not editable
  gtk_container_add(GTK_CONTAINER(window2), viewer); //adding textview to scrollable window
  gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),window2,0,0,0); //adding scrollable window to dialog


  ifstream plik("Pomniejsze/netstat.txt"); //reading from file
  if(plik==NULL) //checking if file is not empty
  {
      //i will add something later
  }
  else //if file is not empty
  {
      while(std::getline(plik, buffer)) //i read from file line by line
      {
          n+=buffer; //i add to "n" 1 line from file
          n+="\n"; //i add "new line" to "n" 
      }
      char* z=new char[n.length()+1]; //i create new temporary char*
      strcpy(z, n.c_str()); //i copy content of "n" to temporary char*
      gtk_text_buffer_set_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(viewer)),z,-1); //i set text of textview to text from temp char*
      g_print(z); //i print out temporary char* which can be seen on attached image on left window
      delete [] z; //i delete temporary char*

  }

  g_signal_connect(dialog, "delete-event",G_CALLBACK(gtk_widget_destroy), NULL); // i add delete event to "x" button
  gtk_widget_show_all(dialog); //i show my dialog
  gint resp=gtk_dialog_run(GTK_DIALOG(dialog)); //i run my dialog

  if(resp==GTK_RESPONSE_CLOSE) //i check if user clicked button
  {
     gtk_widget_destroy(dialog); //if button is clicked i destroy dialog
  }
  else if(resp==GTK_RESPONSE_OK)
  {
      //something will be added later
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-14 18:54:28

您正在使用可变宽度的字体。您真正需要的是一个单间距字体,它是一个固定的宽度,因此所有字符都将从一行排列到另一行。

您可以使用gtk_text_view_set_monospace()只使用默认的单间距字体。此函数只有在GTK+版本3.16之后才可用。

下面是一个普通单频字体的列表。您可以使用PangoFontDescriptiongtk_widget_override_font()将字体设置为其中之一。但是,由于这是不推荐的,并且已经被set_monospace()函数所取代,所以不需要手动强制使用特定的单空间字体。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37230110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档