Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gtkmm,如何设置工具栏?_C++_Linux_Gtkmm - Fatal编程技术网

C++ gtkmm,如何设置工具栏?

C++ gtkmm,如何设置工具栏?,c++,linux,gtkmm,C++,Linux,Gtkmm,我希望我的工具栏位于窗口顶部,而不是垂直扩展,我希望条目水平扩展。这里有一个代码: main.cc // g++ test2.cc `pkg-config gtkmm-3.0 --libs --cflags` -std=c++11 #include <gtkmm.h> int main( int argc, char **argv) { Glib::RefPtr< Gtk::Application > app = Gtk::Application::create(

我希望我的工具栏位于窗口顶部,而不是垂直扩展,我希望条目水平扩展。这里有一个代码:

main.cc

// g++ test2.cc `pkg-config gtkmm-3.0 --libs --cflags` -std=c++11
#include <gtkmm.h>

int main( int argc, char **argv)
{
  Glib::RefPtr< Gtk::Application >  app = Gtk::Application::create( "My.ToolBar.Drive.Me.Crazy" );

  /*window*/
  Gtk::Window * W1 = new Gtk::Window();
  W1->set_default_size(800, 600);

  /*box*/
  Gtk::Box * X1  = new Gtk::Box( Gtk::Orientation::ORIENTATION_VERTICAL );

  /*toolbar*/
  Gtk::Toolbar * T1 = new Gtk::Toolbar();

  /*button*/
  Gtk::ToolButton * B1 = new Gtk::ToolButton(Gtk::Stock::GO_BACK);

  /*button*/
  Gtk::ToolButton * B2 = new Gtk::ToolButton(Gtk::Stock::GO_FORWARD);

  /*tool item for the entry*/
  Gtk::ToolItem * I1 = new Gtk::ToolItem();

  /*entry*/
  Gtk::Entry * E1 = new Gtk::Entry();

  /*button*/
  Gtk::ToolButton * B3 = new Gtk::ToolButton(Gtk::Stock::GO_BACK);


  T1->append( *B1 );
  T1->append( *B2 );
  T1->append( *I1 );
  T1->append( *B3 );

  I1->add( *E1);

  X1->pack_start( *T1, true, true );

  W1->add( *X1 );

  W1->show_all();

  app->run( * W1 );

  delete B1;
  delete B2;
  delete B3;
  delete I1;
  delete E1;
  delete X1;
  delete W1;
}
//g++test2.cc`pkg config gtkmm-3.0--libs--cflags`-std=c++11
#包括
int main(int argc,字符**argv)
{
Glib::RefPtrapp=Gtk::Application::create(“My.ToolBar.Drive.Me.Crazy”);
/*窗口*/
Gtk::Window*W1=新的Gtk::Window();
W1->设置默认大小(800600);
/*盒子*/
Gtk::Box*X1=新Gtk::Box(Gtk::方向::方向\垂直);
/*工具栏*/
Gtk::Toolbar*T1=新的Gtk::Toolbar();
/*钮扣*/
Gtk::ToolButton*B1=新Gtk::ToolButton(Gtk::Stock::GO_BACK);
/*钮扣*/
Gtk::ToolButton*B2=新Gtk::ToolButton(Gtk::Stock::GO_FORWARD);
/*条目的工具项*/
Gtk::ToolItem*I1=新的Gtk::ToolItem();
/*入口*/
Gtk::Entry*E1=新的Gtk::Entry();
/*钮扣*/
Gtk::ToolButton*B3=新Gtk::ToolButton(Gtk::Stock::GO_BACK);
T1->追加(*B1);
T1->append(*B2);
T1->append(*I1);
T1->追加(*B3);
I1->添加(*E1);
X1->pack_start(*T1,true,true);
W1->add(*X1);
W1->show_all();
应用程序->运行(*W1);
删除B1;
删除B2;
删除B3;
删除I1;
删除E1;
删除X1;
删除W1;
}

我不明白扩展和填充有什么区别,有两个函数,
set_hexpand()
set_vexpand()
无论我用这些函数做了什么(过去两个小时),我总是得到与上面代码相同的结果。

1.-对于X1,将expand设置为false。
2.-使您的工具项也可扩展。
3.-向X1添加扩展器

// c++ main.cpp -std=c++11 `pkg-config gtkmm-3.0 --libs --cflags`
#include <gtkmm.h>

int main( int argc, char **argv) {
  Glib::RefPtr< Gtk::Application >  app = Gtk::Application::create( "My.ToolBar.Drive.Me.Crazy" );
  /*window*/
  Gtk::Window * W1 = new Gtk::Window();
  W1->set_border_width (10);

  /*box*/
  Gtk::Box * X1  = new Gtk::Box( Gtk::ORIENTATION_VERTICAL );

  /*toolbar*/
  Gtk::Toolbar * T1 = new Gtk::Toolbar();

  /*button*/
  Gtk::ToolButton * B1 = new Gtk::ToolButton(Gtk::Stock::GO_BACK);

  /*button*/
  Gtk::ToolButton * B2 = new Gtk::ToolButton(Gtk::Stock::GO_FORWARD);

  /*tool item for the entry*/
  Gtk::ToolItem * I1 = new Gtk::ToolItem();
  I1->set_expand (); // true is default

  /*entry*/
  Gtk::Entry * E1 = new Gtk::Entry();

  /*button*/
  Gtk::ToolButton * B3 = new Gtk::ToolButton(Gtk::Stock::GO_BACK);

  /* vertical expander for the window */
  Gtk::Box *expander = Gtk::manage (new Gtk::Box (Gtk::Orientation::ORIENTATION_VERTICAL));

  T1->append( *B1 );
  T1->append( *B2 );
  I1->add (*E1);
  T1->append( *I1 );
  T1->append( *B3 );



  X1->pack_start( *T1, false, true );
  X1->pack_start( *expander, true, true );

  W1->add( *X1 );

  W1->show_all();

  app->run( * W1 );

  delete B1;
  delete B2;
  delete B3;
  delete I1;
  delete E1;
  delete X1;
  delete W1;
}
<代码> //C++ + MIN .CPP -STD= C++ 11’PKG配置GTKMM3.0——LIBS——CFLAGS #包括 int main(int argc,字符**argv){ Glib::RefPtrapp=Gtk::Application::create(“My.ToolBar.Drive.Me.Crazy”); /*窗口*/ Gtk::Window*W1=新的Gtk::Window(); W1->设置边框宽度(10); /*盒子*/ Gtk::Box*X1=新Gtk::Box(Gtk::方向_垂直); /*工具栏*/ Gtk::Toolbar*T1=新的Gtk::Toolbar(); /*钮扣*/ Gtk::ToolButton*B1=新Gtk::ToolButton(Gtk::Stock::GO_BACK); /*钮扣*/ Gtk::ToolButton*B2=新Gtk::ToolButton(Gtk::Stock::GO_FORWARD); /*条目的工具项*/ Gtk::ToolItem*I1=新的Gtk::ToolItem(); I1->set_expand();//默认为true /*入口*/ Gtk::Entry*E1=新的Gtk::Entry(); /*钮扣*/ Gtk::ToolButton*B3=新Gtk::ToolButton(Gtk::Stock::GO_BACK); /*窗口的垂直扩展器*/ Gtk::Box*expander=Gtk::manage(新Gtk::Box(Gtk::Orientation::Orientation_VERTICAL)); T1->追加(*B1); T1->append(*B2); I1->添加(*E1); T1->append(*I1); T1->追加(*B3); X1->pack_start(*T1,false,true); X1->pack_start(*扩展器,真,真); W1->add(*X1); W1->show_all(); 应用程序->运行(*W1); 删除B1; 删除B2; 删除B3; 删除I1; 删除E1; 删除X1; 删除W1; }
你好,乔,谢谢你的回答!sry为我的延迟,一些个人问题。。。不管怎么说,我又开始做生意了,你的回答很好!很高兴它能帮助您:)