• 検索結果がありません。

チェックボタン

ドキュメント内 ÆþÌçGTK+ (ページ 127-130)

第 7 章 ウィジェットリファレンス 113

7.1.2 チェックボタン

チェックボタンウィジェット(GtkCheckButton)はボタンウィジェットから派生したウィジェットで,ボタンを押すことで ボタン上にチェックマークを表示できます.アプリケーションの設定でオプションの使用の有無をユーザーが設定したいときに 使用します.

オブジェクトの階層構造

G O b j e c t

+ - - - -G I n i t i a l l y U n o w n e d + - - - -G t k O b j e c t

+ - - - -G t k W i d g e t

+ - - - -G t k C o n t a i n e r + - - - -G t k B i n

+ - - - -G t k B u t t o n

+ - - - -G t k T o g g l e B u t t o n + - - - -G t k C h e c k B u t t o n

表7.2 チェックボタンウィジェットのシグナル シグナル 説明

toggled チェックボタンの状態が変化したときに発生するシグナル.

ウィジェットの作成

チェックボタンウィジェット(GtkCheckButton)を作成する関数は次の3つです.

gtk check button new

ラベルなしのチェックボタン(図7.3上段)を作成する関数です.

G t k W i d g e t* g t k _ c h e c k _ b u t t o n _ n e w (v o i d) ;

gtk check button new with label

ラベル付きのチェックボタン(図7.3中段)を作成する関数です.

G t k W i d g e t* g t k _ c h e c k _ b u t t o n _ n e w _ w i t h _ l a b e l (c o n s t g c h a r * l a b e l ) ;

gtk check button new with mnemonic

アクセラレータ機能付きチェックボタン(図7.3下段) を作成する関数です.アクセラレータキーに設定したい文字の前 にアンダースコアを挿入します.

G t k W i d g e t* g t k _ c h e c k _ b u t t o n _ n e w _ w i t h _ m n e m o n i c (c o n s t g c h a r * l a b e l ) ;

シグナルとコールバック関数

表7.2にチェックボタンウィジェットのシグナルを示します.オブジェクトの階層構造を見てもわかるように,チェックボタ ンはトグルボタンの機能を継承したウィジェットです.toggledシグナルはトグルボタンから継承したシグナルです.

toggledシグナルに対するコールバック関数のプロトタイプ宣言は次のようになります.

v o i d u s e r _ f u n c t i o n (G t k T o g g l e B u t t o n * t o g g l e b u t t o n , g p o i n t e r u s e r _ d a t a ) ;

ウィジェットのプロパティ設定

チェックボタンがアクティブ(チェックされている状態)かどうかを調べるには,トグルボタンに対する関数を使います.関 数gtk toggle button get activeの戻り値がTRUEなら状態がアクティブ,FALSEなら状態がアクティブではないということ になります.

g b o o l e a n g t k _ t o g g l e _ b u t t o n _ g e t _ a c t i v e (G t k T o g g l e B u t t o n * t o g g l e _ b u t t o n ) ; トグルボタンの状態を設定するには関数gtk toggle button set activeを使います.

v o i d g t k _ t o g g l e _ b u t t o n _ s e t _ a c t i v e (G t k T o g g l e B u t t o n * t o g g l e _ b u t t o n , g b o o l e a n i s _ a c t i v e ) ;

また,関数gtk toggle button toggledを使うと,トグルボタンの今の状態を反転(トグル)できます.

v o i d g t k _ t o g g l e _ b u t t o n _ t o g g l e d (G t k T o g g l e B u t t o n * t o g g l e _ b u t t o n ) ;

図7.3 チェックボタン

サンプルプログラム

チェックボタンウィジェットのサンプルプログラムをソース7–1–2に示します.このプログラムは,チェックボタンの

toggledシグナルに対するコールバック関数cb button toggled内でチェックボタンの状態を調べて,ターミナル上に表示しま

す.

ソース7-1-2 チェックボタンウィジェットのサンプルプログラム: gtkcheckbutton-sample2.c

1 # i n c l u d e <g t k / g t k . h >

2

3 s t a t i c v o i d

4 c b _ b u t t o n _ t o g g l e d (G t k T o g g l e B u t t o n * w i d g e t ,

5 g p o i n t e r u s e r _ d a t a )

6 {

7 g b o o l e a n a c t i v e ;

8 g c h a r * s t r [ ] = { " F A L S E " , " T R U E " } ;

9

10 a c t i v e = g t k _ t o g g l e _ b u t t o n _ g e t _ a c t i v e ( w i d g e t ) ;

11 g _ p r i n t ( " C h e c k b u t t o n s t a t e : % s \ n " , s t r [ a c t i v e ] ) ;

12 }

13 14 i n t

15 m a i n (i n t a r g c , c h a r * * a r g v )

16 {

17 G t k W i d g e t * w i n d o w ;

18 G t k W i d g e t * b o x ;

19 G t k W i d g e t * b u t t o n ;

20

21 g t k _ i n i t ( & a r g c , & a r g v ) ;

22

23 w i n d o w = g t k _ w i n d o w _ n e w ( G T K _ W I N D O W _ T O P L E V E L ) ;

24 g t k _ w i n d o w _ s e t _ t i t l e ( G T K _ W I N D O W ( w i n d o w ) , " G t k C h e c k B u t t o n S a m p l e 2 " ) ;

25 g t k _ w i d g e t _ s e t _ s i z e _ r e q u e s t ( w i n d o w , 3 0 0 , -1);

26 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( w i n d o w ) , " d e s t r o y " ,

27 G _ C A L L B A C K ( g t k _ m a i n _ q u i t ) , N U L L ) ;

28

29 b o x = g t k _ v b o x _ n e w ( T R U E , 0 ) ;

30 g t k _ c o n t a i n e r _ a d d ( G T K _ C O N T A I N E R ( w i n d o w ) , b o x ) ;

31

32 b u t t o n = g t k _ c h e c k _ b u t t o n _ n e w _ w i t h _ l a b e l ( " P l e a s e c l i c k m e . " ) ;

33 g t k _ b o x _ p a c k _ s t a r t ( G T K _ B O X ( b o x ) , b u t t o n , T R U E , T R U E , 0 ) ;

34 g t k _ t o g g l e _ b u t t o n _ s e t _ a c t i v e ( G T K _ T O G G L E _ B U T T O N ( b u t t o n ) , T R U E ) ;

35 g _ s i g n a l _ c o n n e c t ( G _ O B J E C T ( b u t t o n ) , " t o g g l e d " ,

36 G _ C A L L B A C K ( c b _ b u t t o n _ t o g g l e d ) , N U L L ) ;

37

38 g t k _ w i d g e t _ s h o w _ a l l ( w i n d o w ) ;

39 g t k _ m a i n ( ) ;

40

41 r e t u r n 0 ;

42 }

図7.4 チェックボタンウィジェットのサンプルプログラム

ドキュメント内 ÆþÌçGTK+ (ページ 127-130)