どのようにしてGtkBttonラウンドを作成できますか?GtkButtonラウンドを作成する
1
A
答えて
0
いくつかのオプションがあります。
- スタイルを調整します。ベースセットには真円度オプションはありません。いくつかのテーマエンジンは、ボーダー画像の仕様や真円度を提供するかもしれませんが、どこでも動作しません。
- あなたの好みのように見えるテーマを強制します。これはあなたが望むテーマを指定するgtkrc文字列をロードするだけではあまり難しくありません。ユーザーがテーマを持っていることを確認するか、フォールバックを確認する必要があります。
- ボタンをサブクラス化して自分で描画します。 1つの方法は、ボーダーとレリーフを0に設定し、イメージをパックし、状態変更イベントに応答して、適切なプレライト(ホバー)イメージを使用することです。別の方法は、エクスポーズイベントを書き換えて、望むようにボタンを描画することです。
0
受け入れ答えは言った:
基本セットには丸みのオプションはありません。
さて、今はあります。特殊なケースで
https://developer.gnome.org/gtk3/stable/GtkButton.html
、ボタンが.circularスタイルクラスを追加することにより、ラウンド行うことができます。
ので、例えば:
gtk_style_context_add_class(
gtk_widget_get_style_context(GTK_WIDGET(button)),
"circular"
);
これは、標準的なテーマ、アドワイチャと高コントラストの両方を使用して動作します。
問題があります:これは、expand
プロパティが設定されていないか手動でアップサイズされていないボタンに対しては問題なく機能します。私はこれがのexpand
のサイズを持っていて動作させることができるかどうかを考え出していません。これは私がこれを望んでいた拡大ボタンと同じように丸みを帯びていますが、 :/私の推測では、開発者は考えていない、または気に... circular
スタイルクラスを持つ大きなボタンをサポートしています。 IRCでいつかお尋ねします。
関連する問題
- 1. Swiftラウンドでインナーシャドウを作成する
- 2. カスタムdrawRectでラウンドUIButtonを作成する:
- 3. TableViewでラウンド画像を作成する
- 4. 作成100%ラウンドのUIView/UIImageview
- 5. UIViewラウンドの特定のコーナーを作成
- 6. 10チーム6ラウンドのラウンドロビンスケジュールを作成
- 7. ラウンド可能なプログレスバーを作成するには?
- 8. ウォッチキットでラウンドWKInterfaceButtonを作成するには?
- 9. ラウンド番号の後にビットマップを作成できません
- 10. スイッチJavaの最初のラウンドのためのIfステートメントの作成
- 11. GtkListStoreにGtkButtonをGTK +のテキストで追加する
- 12. SetIntervalは、多くのラウンド実行後に遅延を作成します。
- 13. ラウンドは
- 14. ラウンド日
- 15. bigqueryでラウンドする方法
- 16. WPF DataGridにXMLを正しくバインドする(ラウンド2)実行時に新しいDataGridを作成する
- 17. ラウンド画像リンク
- 18. 即決のラウンド
- 19. カードゲームのラウンド
- 20. Railsのラウンド数
- 21. jQueryラウンド関数
- 22. jQueryのラウンド
- 23. ラウンドのみ
- 24. Npoiラウンド式
- 25. Gtk + 3(C言語)を使ってGtkButtonの色を定義するには
- 26. ラウンドでforループを実装する
- 27. TSQLラウンド()不一致?
- 28. SQLラウンド問合せ
- 29. UIProgressView進捗値ラウンド
- 30. Javascriptのラウンド関数
この提案をいただきありがとうございます。エクスポーズイベントメソッドで描画ボタンが実行されるサンプルをポストできますか? – boom
G_DEFINE_TYPE(RButton、rbutton、GTK_TYPE_BUTTON) static void rbutton_class_init(RButtonClass * klass){ ((GtkWidgetClass *)klass) - > expose_event = rbutton_expose; } – Rubinium
以下でgtk_button_paintを交換: 静的GINTのrbutton_expose(GtkWidget *ウィジェット、GdkEventExpose *イベント){ IF(GTK_WIDGET_DRAWABLE(ウィジェット)){ GtkWidget *子供= GTK_BIN(ウィジェット) - >子。 GtkButton * button = GTK_BUTTON(ウィジェット); GtkStateType state_type = GTK_WIDGET_STATE(ウィジェット); GtkShadowType shadow_type = button->落ち込んでいますか?GTK_SHADOW_IN:GTK_SHADOW_OUT; _gtk_button_paint(button、&event-> area、state_type、shadow_type、 "button"、 "buttondefault"); (子供) gtk_container_propagate_expose } 戻り値FALSE; } – Rubinium