|
Gtk::Tableによる格子状ウィジット配置
概要
Gtk::Tableを使ってウィジットを格子状に配置する。
始めにGtk::Table::resize()で格子のサイズを設定し、Gtk::Table:::attach()で
ウィジットを配置する。Gtk::Table:::attach()の引数には順に、ウィジット、格子の左端の頂点番号、
右端の頂点番号、上端の頂点番号、下端の頂点番号を指定する。例えば Gtk::Table::resize( 2, 2 ) として
0 | 1 |
2 | 3 |
の様な格子を作り、格子0にウィジットw1を配置したいときは、格子0の左端の頂点番号は0で右端は1、上端は0、下端は1なので
Gtk::Table:::attach( w1, 0, 1, 0, 1 )
とする。同様に格子1にウィジットw2を配置したいときは
Gtk::Table:::attach( w2, 1, 2, 0, 1 )
とする。さらに格子2と3をまたがった範囲にウィジットw3を配置したい場合は
格子2の左端の頂点番号は0で右端は1、上端は1、下端は2、かつ格子3の左端の頂点番号は1で右端は2、上端は1、下端は2なので
Gtk::Table:::attach( w3, 0, 2, 1, 2 )
とする。
ソース
table.cpp
#include <gtkmm.h>
class MainWin : public Gtk::Window
{
Gtk::Table m_table;
Gtk::Button m_bt1, m_bt2, m_bt3, m_bt4;
public:
MainWin();
};
MainWin::MainWin()
: m_bt1( "ボタン1" ), m_bt2( "ボタン2" ), m_bt3( "ボタン3" ), m_bt4( "ボタン3" )
{
m_table.resize( 3, 2 );
m_table.attach( m_bt1, 0, 1, 0, 1 );
m_table.attach( m_bt2, 1, 2, 0, 1 );
m_table.attach( m_bt3, 0, 2, 1, 2 );
m_table.attach( m_bt4, 2, 3, 0, 2 );
add( m_table );
show_all_children();
}
int main( int argc, char *argv[] )
{
Gtk::Main kit( argc, argv );
MainWin mainwin;
Gtk::Main::run( mainwin );
return 0;
}
コンパイル
必要なコンパイルオプションは pkg-config を使って取得する。
g++ table.cpp -o table `pkg-config gtkmm-2.4 --cflags --libs`
結果
|