首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

GTK+ gtk_layout_new() 參數調整機制深度解析

     編輯:程式設計綜合問答

函數原型與參數含義

GtkWidget* gtk_layout_new(GtkAdjustment *hadjustment, GtkAdjustment *vadjustment);

hadjustment 控制水平捲動範圍與步進,vadjustment 控制垂直捲動。若傳入 NULL,GTK+ 會自動建立預設調整物件。

調整物件如何生效

GtkAdjustment 封裝了 value(目前位置)、lower/upper(範圍)、step_increment(單步)、page_increment(頁步)、page_size(可視區大小)。Layout 內部會監聽這些調整物件的 value-changed 訊號,重新計算子元件座標並觸發重繪。

範例程式碼問題分析

原始碼中先呼叫 gtk_layout_new(GTK_ADJUSTMENT(adjustment), GTK_ADJUSTMENT(adjustment2)),此時 adjustment 與 adjustment2 尚未初始化(野指標),導致行為未定義。隨後才用 gtk_adjustment_new() 建立調整物件,但 Layout 已持有無效指標,故參數設定無效果。

正確建立流程

GtkAdjustment *hadj = gtk_adjustment_new(0, 0, 1000, 50, 100, 200);
GtkAdjustment *vadj = gtk_adjustment_new(0, 0, 1000, 50, 100, 200);
GtkWidget *layout = gtk_layout_new(hadj, vadj);

若需動態改變捲動範圍,可隨時呼叫 gtk_adjustment_set_upper() 等函數,Layout 會自動響應。

按鈕定位與捲動互動

gtk_layout_put() 以絕對座標放置子元件。若子元件座標超出可視區,捲動條會自動出現(前提是 Layout 放入 GtkScrolledWindow)。範例缺少 ScrolledWindow,故捲動條不會顯示,調整參數看似無效果。

完整可運行範例架構

window → scrolled_window → layout → button

如此調整參數才會在 UI 上體現為捲動條範圍與步進。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved