gtkmm 是一個開源的,免費的,簡單易用的命令行軟件,用C ++實現,並從偏移量設計,作為GTK + GUI工具包庫的接口,作為GNOME的一部分桌面環境。
功能一目了然
在gtkmm的亮點中,我們可以提到類型安全的回調,以及一組可通過繼承擴展的複雜小部件。它具有類型安全的信號處理程序,UTF8的完全國際化,完整的C ++內存管理(動態分配的小部件的對象組合和自動釋放),完全使用C ++名稱空間,沒有宏。
gtkmm入門
在GNU / Linux系統上安裝gtkmm項目的最簡單方法是通過您的發行版的默認包管理器/軟件存儲庫。如果您的發行版的主要軟件倉庫中沒有該軟件包,您可以從Softoware下載源代碼tarball。
要安裝gtkmm,請將tar存檔保存在您選擇的位置,解壓縮其內容,打開終端模擬器,使用‘ cd’導航到解壓縮的存檔文件的位置。命令,並執行&。&。/ configure && make’命令來優化和編譯源代碼。
然後,你必須運行‘ make install’以root身份或使用sudo命令在系統範圍內部署gtkmm程序,使其可供所有用戶使用。在源文件夾內的/ demos文件夾中為GTK開發人員提供了各種演示。
支持的操作系統
gtkmm是一個獨立於平台的項目,支持GNU / Linux(用GCC編譯),NetBSD(用GCC編譯),FreeBSD(用GCC編譯),Solaris(用GCC或Forte編譯),Microsoft Windows(用GCC編譯)或MSVC ++ .Net 2003/2005/2008)和Mac OS X(使用GCC編譯)操作系統。目前支持32位和64位指令集架構。它完全用C ++編程語言編寫。
此版本中的新內容:
- 基於GTK:
- Editable,RecentChooser,Scale:修復內存洩漏。
- PrintJob:修復對Glib :: throw_exception()的調用。
- 文檔:
- Gdk :: RGBA:從GTK + 更新ctor(ustring)文檔
版本中的新功能:
- GDK:
- 改進Gdk :: Event,創建一個類層次結構。 (Mark Vender,Kjell Ahlstedt)Bug#135978
- Cursor:將CursorType更改為Cursor :: Type。 (默里卡明)
- 設備:將DeviceType更改為Cursor :: Type。 (默里卡明)
- Pixbuf: - 刪除AlphaMode枚舉。 - 將PixbufRotation更改為Pixbuf :: Rotation。 (默里卡明)
- 座位:將SeatCapabilities更改為Seat :: Capabilities。 (默里卡明)
- Visual:將VisualType更改為Visual :: Type。 (默里卡明)
- 窗口: - 將WindowHints更改為Window :: Hints。 - 將WindowTypeHint更改為Window :: TypeHint。 - 將WindowType更改為Window :: Type。 - 將WindowState更改為Window :: State。 (默里卡明)
- 基於GTK:
- 助理:將AssistantPageType更改為Assistant :: PageType。 (默里卡明)
- Box:pack_start / pack_end():重新實現新的GTK + API。 (GtkWidget halign和hexpand屬性.gtk_box_pack_start()和gtk_box_pack_end()函數不再具有expand和fill參數。我們稍後也可能刪除這些參數。請注意pack_start / pack_end()的默認行為現在已經改變了。使PackOptions成為一個枚舉類,用於更嚴格的類型檢查。(Murray Cumming)
- Builder :: get_widget_derived():將此設為靜態。為了避免需要為此創建shared_ptr。 (Murray Cumming)Bug#755037
- ButtonBox:刪除明顯無用的BUTTONBOX_DEFAULT_SPACING。 (默里卡明)
- 應用程序:將ApplicationInhibitFlags更改為Application :: InhibitFlags。 (默里卡明)
- 日曆:將CalendarDisplayOptions更改為Calendar :: Display :: Options。 (默里卡明)
- CellRendererAccel:將CellRendererAccelMode更改為CellRendererAccel :: Mode。 (默里卡明)
- CssSection:將CssSectionType更改為CssSection :: Typewq。 (默里卡明)
- 容器: - forall_vfunc():刪除include_internals參數。 - 刪除set_focus_child(),get_focus_child()等(Murray Cumming)
- 條目:將EntryIconPosition更改為Entry :: IconPosition。 (默里卡明)
- FileFilter:將FileFilterFlags更改為FileFilter :: Flags。 (默里卡明)
- FileChooser: - 將FileChooserConfirmation更改為FileChooser :: Confirmation。 - 將FileChooserAction更改為FileChooser :: Action。 (默里卡明)
- IconView:將IconViewDropPosition更改為IconView :: DropPosition。 (默里卡明)
- 圖片:將ImageType更改為Image :: Type。 (默里卡明)
- 標籤:刪除get / set_angle()和屬性。 (默里卡明)
- LevelBar:將LevelBarMode更改為LevelBar :: Mode。 (默里卡明)
- Notebook:刪除NotebookTab枚舉。 (默里卡明)
- Popover:將PopoverConstraint更改為Popover :: Constraint。 (默里卡明)
- PrintOperation: - 將PrintOperationAction更改為PrintOperation :: Action。 - 將PrintOperationResult更改為PrintOperation :: Result。 (默里卡明)
- 範圍:從(並實現)Orientable派生。 (Muray Cumming)Bug#781655(Daniel Boles)
- RecentFilter:將RecentFilterFlags更改為RecentFilter :: Flags。 (默里卡明)
- 可滾動:將ScrollablePolicy更改為Scrollable :: Policy。 (默里卡明)
- ShortcutsShortcut:直接從Widget派生。 (Kjell Ahlstedt)
- SizeGroup:將SizeGroupMode枚舉重命名為SizeGroup :: Mode。 (默里卡明)
- SpinButton: - 將SpinButtonUpdatePolicy更改為SpinButton :: UpdatePolicy。 - 將INPUT_ERROR常量移到類中。 (默里卡明)
- TextConstIter(TextModel :: const_iterator):添加默認構造函數。 (默里卡明)
- TextMark:避免為此創建RefPtr。通過添加私有TextBuffer :: get_iter_at_mark()(Murray Cumming)Bug#755037#c21
- TreeModel:將TreeModelFlags更改為TreeModel :: Flags。 (默里卡明)
- TreeView: - 將TreeViewGridLines更改為GridLines。 - 將TreeViewDropPosition更改為TreeView :: DropPosition。 (默里卡明)
- TreeViewColumn:將TreeViewColumnSizing更改為TreeViewColumn :: Sizing。 (默里卡明)
- 小部件: - 刪除get_preferred_width()等(Kjell Ahlstedt) - 刪除get / set_center_widget()。 (默里卡明)
- 窗口: - 刪除get / set_hide_titlebar_when_maximized()。 - 刪除has_toplevel_focus()和屬性。 (默里卡明)
- 文檔:
- Gtk :: CellLayout:改進get_first_cell()函數的文檔。 (Daniel Boles)
- Gtk :: TreeModel:改進foreach *()函數的文檔。 (Daniel Boles)
- Gdk,Gtk:更新課堂內容的文檔。 (Kjell Ahlstedt)
- 演示: - 修復Glib :: SignalProxy :: connect()(Kjell Ahlstedt)更改後的make檢查錯誤126213 - 適應更改的Box :: pack_start / pack_end()行為。例如:指定EXPAND_WIDGET,我們之前使用的是默認值。 (默里卡明)
- Builder demo:刪除“展開”按鈕來自.ui文件的子屬性因為它已從GtkBox中刪除。展開ScrolledWindow。 (Kjell Ahlstedt)
- 構建
- 適應cairomm和glibmm枚舉更改。 (默里卡明)
- 將RefPtr的動態轉換調整為std :: shared_ptr。 (默里卡明)
- Visual Studio構建:更新glibmm ABI版本。 (Chun-wei Fan)
版本3.89.5.1中的新功能:
- Gdk:
- Pixbuf:get_pixels():Const修正。 (默里卡明)
- 基於GTK:
- FileChooserDialog:
- 允許使用use-header-bar進行構建。
- 刪除採用後端參數的構造函數。 (Daniel Boles)Bug#780004
- TreeView:在適當的情況下,更多地使用TreeModel :: const_iterator而不是迭代器。 (默里卡明)
- 構建
- 使用glibmm-2.54代替glibmm-2.52。
版本3.89.3中的新功能:
- Gtk:
- 網格:attach():添加默認值。 (Kjell Ahlstedt)
- TextIter:
- TextIter:製作一個真正的const_iterator(Kjell Ahlstedt)Bug#142126
- forward / backward_find_char():使用sigc :: slot而不是函數指針。 (Kjell Ahlstedt)
- 文檔:
- 演示:從TextView演示中刪除過時的文本(Kjell Ahlstedt)
版本3.89.1中的新功能:
- 這是gtkmm-4.0 API / ABI的第一個版本,包裹GTK + -4.0。它與gktmm-3.0 API / ABI並行安裝,其中最新版本為gtkmm 3.22.0。
- 構建/一般:
- 使用GTK + -4.0而不是GTK + -3.0。 (Kjell Ahlstedt)
- 使用C ++ 14。 (默里卡明)
- 使用glibmm-2.52代替glibmm-2.4,pangomm-2.42代替pangomm-1.4,使用atkmm-2.26代替atkmm-1.6。請注意,via,glibmm,我們現在使用libsigc ++ - 3.0而不是libsigc ++ - 2.0。 (默里卡明)
- 刪除已棄用的API。 (Kjell Ahlstedt)
- 添加默認信號處理程序(在_ *()上),我們之前無法打破ABI。 (Kjell Ahlstedt)
- 基於GTK:
- 容器:使add()非虛擬。 (Kjell Ahlstedt)
- FontButton:從FontChooser接口中獲取並實現它。 (Kjell Ahlstedt)
- Label():不要使用誤導的對齊參數名稱。 (djb)Bug#774652
- 對象:刪除gobject_disposed_。 (Kjell Ahlstedt)
- ToolButton:派生並實現Actionable接口。 (Kjell Ahlstedt)
- 小部件:添加measure()和measure_vfunc(),它取代了get_preferred _ * _ vfunc()。 (Kjell Ahlstedt)
- Window:使raise()非虛擬。 (Kjell Ahlstedt)
- 文檔:
- 框架:修復set_label_align()的文檔(Kjell Ahlstedt)Bug#774249
版本3.22.0中的新功能:
- Gtk:
- ApplicationWindow:添加正確的wrap()方法,棄用不正確的方法。 (Kjell Ahlstedt)Bug#767951
- FlowBox,ListBox:添加bind_model()和bind_list_store()。 (Kjell Ahlstedt,Murray Cumming)#755149
- UIManager,ActionGroup,RadioAction,RecentAction,ToggleAction:不推薦使用,如在C GTK + API中。 (Kjell Ahlstedt)Bug#768573。
- 構建
- 修復無聲版本(Kjell Ahlstedt)Bug#768797
版本3.21.4中的新功能:
- Gtk:
- ApplicationWindow:添加正確的wrap()方法,棄用不正確的方法。 (Kjell Ahlstedt)Bug#767951
- FlowBox,ListBox:添加bind_model()和bind_list_store()。 (Kjell Ahlstedt,Murray Cumming)#755149
- UIManager,ActionGroup,RadioAction,RecentAction,ToggleAction:不推薦使用,如在C GTK + API中。 (Kjell Ahlstedt)Bug#768573。
- 構建
- 修復無聲版本(Kjell Ahlstedt)Bug#768797
版本3.19.6中的新功能:
- 基於GTK:
- TextIter:添加starts_tag(),棄用了starts_tag()。 (Kjell Ahlstedt)
- TreeView:在get_tooltip_context_path()修復崩潰(Kjell Ahlstedt)Bug#760030。
- GDK:
- 添加Gdk :: Seat(Kjell Ahlstedt)Bug#759806。
- 設備:
- 添加get_seat()。
- 棄用grab()和ungrab()。
- DeviceManager,顯示:添加和棄用(Kjell Ahlstedt)Bug#759806。
- DeviceManager:棄用list_devices()和get_client_pointer()。 (Kjell Ahlstedt)Bug#759806。
- 顯示:
- 棄用get_device_manager()。
- 添加list_seats(),get_default_seat(),signal_seat_added()和signal_seat_removed()。 (Kjell Ahlstedt)Bug#759806。
- 構建
- C ++ 11:使用override關鍵字而不是virtual,用於合適的析構函數。 (默里卡明)
版本3.19.3中的新內容:
- Gdk :: Rectangle:添加運算符==( )。
- C ++ 11:使用override關鍵字。
版本3.17.4中的新功能:
- 助理:添加get / set_page_has_padding()。 (默里卡明)
- FontChooser:添加get / set_font_map()。 (默里卡明)
- IconInfo:棄用get_builtin_pixbuf()。 (Kjell Ahlstedt)
- IconTheme:lookup_icon(),choose_icon():為標誌添加默認值0。 (默里卡明)
- 小部件:不使用坐標而棄用drag_begin()。 (Kjell Ahlstedt)
- GDK:
- 窗口:添加get / set_passthrough()。 (默里卡明)
- 演示:IconTheme:不要使用已棄用的內置圖標API。 (默里卡明)
- 構建
- 請勿禁用多於必要的棄用警告(Kjell Ahlstedt)Bug#750379。
版本3.16.0中的新功能:
- Gtk:
- 構建器:在解析TreeModel(Kjell Ahlstedt)時,不要獲取gtkmm派生的GType(Bug#742637)。
版本3.15.4中的新功能:
- 基於GTK:
- Builder :: get_type_from_name_vfunc():調用基類函數。如果基類函數做得更多,而不是jusgin調用g_type_from_name()。 (Kjell Ahlstedt)Bug#742637。
- TextBuffer:
- 添加insert_martkup()。
- 添加copy_target_list和paste_target_list屬性。 (Kjell Ahlstedt)
- 文檔:
- Pixbuf:將Glib :: ResourceError的提及更改為Gio :: ResourceError。 (Kjell Ahlstedt)
版本3.15.3中的新功能:
- 基於GTK:
- CssProvider:添加CssProviderError和signal_parsing_error()(Kjell Ahlstedt)
- 添加CssSection。 (Kjell Ahlstedt)
- 對話框:使用DialogFlags修復構造函數。 (Kjell Ahlstedt)Bug#738513(Simonas Kazlauskas)
- ScaleButton: - 更正構造函數。 - 添加沒有圖標的構造函數。 (默里卡明)
- ScrolledWindow:添加get / set_overlay_scrolling()和屬性。 (Juan R. GarcAa Blanco)
- Stack:添加非均勻和不同的屬性。 (Juan R. GarcAa Blanco)
- TextTag:添加後備,後備設置,字母間距和字母間距設置屬性。 (Juan R. GarcAa Blanco)
- TextView:添加monospace屬性。 (Juan R. GarcAa Blanco)
- 小部件:添加了get_action_group()和list_action_prefixes()。 (默里卡明)
- 文檔:
- 在@newin之後添加一個空行,缺少它。 (Kjell Ahlstedt)
- 修復一些Doxygen警告。 (Kjell Ahlstedt)
- ScaleButton:記錄構造函數。 (默里卡明)
版本3.15.2中的新功能:
- 基於GTK:
- 對話框:使用DialogFlags添加構造函數,例如創建帶有標題欄的對話框。 (Kjell Ahlstedt)Bug#738513。
- 網格:添加不帶'sibling'參數的attach_next_to()。 (Kjell Ahlstedt)Bug#739340。
- 疊加:糾正“自”以來文檔。
- SearchEntry:添加search_changed信號(Kjell Ahlstedt)
- 添加了StyleProperty(Mark Vender)Bug#673317。
- GDK
- Curor:棄用不帶Display參數的構造函數。 (默里卡明)
- Pixbuf:棄用create_from_inline()。 (Kjell Ahlstedt)
版本3.14.0中的新功能:
- 文檔:
- 標題欄演示:重命名的箭頭圖標更新。 (Kjell Ahlstedt)
- 構建
- 更新和檢修Visual Studio 2008和2010項目。 (Chun-wei Fan)
- 在Windows上修復演示。 (Chun-wei Fan)
版本3.11.4中的新功能:
- 基於GTK:
- 操作,可激活:取消激活不使用StockID的方法。我們並不是故意讓他們棄用。 (Kjell Ahlstedt)
- CellArea:添加signal_apply_attributes()。 (Kjell Ahlstedt)
- SelectionData:添加get_data(int&length)。 (Kjell Ahlstedt)
- ToggleAction:棄用使用(已棄用)StockID(Kjell Ahlstedt)的create()
- ToolItem:添加unset_proxy_menu_item()。 (Kjell Ahlstedt)
- UIManager:棄用add-tearoffs屬性。 (Kjell Ahlstedt)
- GDK:
- Pixbuf:添加create_from_resource()方法。
- RGBA,顏色:修復set_hsl(),改進文檔。 (Kjell Ahlstedt)Bug#720258
- 構建
- CellArea:修復typedef的文檔SlotForeachAlloc額外的'>'在文檔中陷入了無限循環中的doxygen 1.8.4。 (Kjell Ahlstedt)
- 使用--disable-deprecated-api(Kjell Ahlstedt)修復構建
- 文檔:
- 添加缺少的小部件圖片。 (Kjell Ahlstedt)
- AppChooser *:改進文檔。 (Kjell Ahlstedt)Bug#650012
- ColorChooser :: get_rgba():添加文檔(Kjell Ahlstedt)
- SelectionData:添加方法docs。 (Kjell Ahlstedt)
- ToolItem:添加類文檔。 (Kjell Ahlstedt)
版本3.10.1中的新功能:
- Gtk:
- 避免包含已棄用的stockid.h。這樣就可以使用已棄用的API來構建應用程序。
- RadioAction,RecentAction:棄用帶有StockID的構造函數和方法。 StockID已被棄用,因此不應影響應用程序構建。
版本3.10.0中的新功能:
- 基於GTK:
- Undeprecate UIManager,Action,ActionGroup,ToggleAction,RadioAction和RecentAction,儘管它們仍在C API中棄用:請參閱https://mail.gnome.org/archives/gtkmm-list/2013-October/msg00003.html (默里卡明)
- RadioAction:棄用使用StockID的構造函數。 (默里卡明)
- ToggleAction:棄用使用StockID的構造函數(Murray Cumming)
- 應用程序: - add / remove_accelerator():添加不帶variant參數的重載。 (Murray Cumming) - 在其中一個構造函數中添加缺少的gtk_init()調用。 (默里卡明)
- 按鈕:刪除不必要的BuiltinStockID聲明。 (默里卡明)
- HeaderBar:make get_show_close_button()const。 (Juan Rafael GarcAa Blanco)
- IconView:set_cursor():添加沒有單元格參數的版本(Murray Cumming)
- PlacesSidebar:使用drag_signals修復崩潰,更正一些OWNERSHIP_ * s,通過參考傳遞矢量信號(Murray Cumming)Bug#705642
- 設置:添加create_action()。
- SearchBar:handle_event():使用GdkEventKey而不是GdkEvent。 (默里卡明)
- Window:get_frame_extents():添加const版本。 (默里卡明)
- GDK:
- 棄用顏色。 (Murray Cumming)
- 構建
- 更新gtk-demo MSVC項目(Chun-wei Fan)
版本3.9.14中的新功能:
- Gtk:
- 添加SearchBar。 (Juan Rafael Garcia Blanco)
- 按鈕:用set_image_from_icon_name()替換icon_name ctor。 (Kjell Ahlstedt)Bug#707791
- Scale:構造函數:刪除默認參數值以避免歧義。 (Murray Cumming)Bug#707810(cheshirekow)
- GDK:
- 窗口:添加set_opaque_region()。 (默里卡明)
- 工具:
- gtk_generate_extra_defs.sh:添加--make-patch選項。 (Kjell Ahlstedt)
- 構建
- 更新Visual Studio項目(Chun-wei Fan)
版本3.9.12中的新功能:
- Gtk:
- 按鈕:添加帶有icon_name和大小的構造函數。 (默里卡明)
- 條目:添加get / set_tabs()和屬性。 (默里卡明)
- 標籤:添加get / set_lines()和屬性。 (默里卡明)
- 添加Revealer。 (Juan R. GarcAa Blanco)Bug#705460
- 窗口小部件:
- 添加get_scale_factor()。 (默里卡明)
- 小部件:添加帶有x和y坐標的drag_begin()。 (默里卡明)
- GDK:
- 光標:包裝一些新功能。 (默里卡明)
評論沒有發現