FLTK學習-6-使用FLUID編程(4)

11.9 FLUID 構件樣式屬性

11.7.1 Style Attributes

Label Font (pulldown menu)

標籤字體,忽略各種符號、位圖以及象圖。你的程序可以通過這些槽改變實際使用的字體,假如你想使用提供的16種默認字體以外的字體的話。

Label Size (pulldown menu)

標籤字體像素高度,忽略各種符號、位圖以及象圖。要想不關閉面板查看效果,輸入新的值然後按Tab

Label Color (button)

標籤字體,忽略象圖(位圖,不過可以使用該顏色作爲前景色)。

Box (pulldown menu)

      構件背景的區域類型。許多構件使用”frame”比使用box”運行和繪出的更快。Frame邊框不畫內部的顏色,保留它們原先的樣子。小心!FLUID可能能夠正常工作,但是實際的程序中可能會在構件中遺留下不需要的廢物。

      如果窗口中充滿子構件,你可以通過將窗口的box區域類型改爲”NO_BOX”來提高重繪速度,FLUID將在沒有box區域顏色的地方顯示擋板,【??】注意,該擋板不會被最終程序繪出,相反的會顯示一些隨機的垃圾。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

Down Box (pulldown menu)

      當按鈕按下或者其他一些像滾動條以及設值器等的邊框風格。

Color (button)

      box區域顏色。

Select Color (button)

      一些構件使用這個來設置特定部分的顏色,FLUID不總是顯示結果,這是按鈕按下時的顏色以及輸入框獲得了焦點時的顏色。

Text Font, Size, and Color

      一些構件顯示文本,如輸入框、下拉菜單,瀏覽器。

11.10 FLUID構件的C++屬性

11.7.2 C++ Attributes

Class

這個是你自己的繼承自Fl_Widget的子類,無論你在此輸入什麼都將作爲實例化的對象的類名。而且不會在.h文件中加入#include頭文件,你必須在”Extra Code”(額外代碼)的第一行提供一個聲明瞭你的子類的#include行。

該類必須與你正在欺騙的類相似【什麼東西??】。它不用必須是一個子類,有時候對另一個FLUID類而言這是很有用的,現在唯一獲得一個帶雙緩衝的窗口的方法是改變該窗口的該屬性爲”Fl_Double_Window”,並且加入下面一句到額外代碼中:

#include <FL/Fl_Double_Window.h>

Type (upper-right pulldown menu)

      一些類有自類型來改變它們的外表或者行爲,你從該菜單中選出子類型【??】。

Name (text field)

      要聲明的變量名,要將該構件保存爲的指針。該變量的類型是<class> *,如果名字爲空,則不會創建變量。你可以給多個構件命名爲”name[0]”, ”name[1]”, ”name[2]”等,這將使的FLUID聲明一個指針數組,數組足夠大到能夠存放最大的數字,數組中的所有構件的類型必須是一樣的。

Public (button)

控制構件的公共訪問屬性,當構件在一個C++類中時,這控制構件在類中是公共還是私有的,不在類中時控制構件是靜態的還是全局的。

Extra Code (text fields)

      這四個域讓你可以在.h.cxx文件中逐行輸入代碼。如果文本以一個#或者extern開頭,則FLUID就認爲這是一個include行,就將其寫入.h文件,如果相同的include行出現了多行則只寫入一行。其餘所有的都是代碼行,局部變量指針o指向當前的構件,構造的窗口由本地變量w指向,你還可以獲取傳遞給函數的任何參數以及在這之間的所有命名構件。FLUID將檢查配對的括弧,大括號和引用,但是不做其他的錯誤檢查。此處小心,因爲可能非常難以指出編譯器中構件生成的一個錯誤。如果你的需要多於4行你應該在cxx文件中調用一個函數。

Callback (text field)

可以是一個函數名或者一小段代碼,如果你輸入除字母、數字、下劃線以外的其他任何東西,FLUID都將它們作爲代碼。你自己的代碼中的指向函數的名字,必須聲明爲如下形式:void name(<class>*, void *)。一小段代碼將插入到cxx文件中的靜態函數中,函數原型爲void name(class *o, void *v),所以你可以用o引用構件,用v引用user_data()FLUID將檢查配對的括弧,大括號和引用,但是不做其他的錯誤檢查。此處小心,因爲可能非常難以指出編譯器中構件生成的一個錯誤。如果回調時空的則將不設置回調。

User Data (text field)

這是構件的user_data()的值,如果爲空,則使用0.它可以是任何可以轉換爲voidC代碼。

Type (text field)

回調函數原型中的void*將被替換爲該對象,你可能想在老的XForms代碼中使用long。警告!任何除void*類型之外的都不保證能夠工作,但是所有的其他指針結構都是可以的,long也是可以的。

When (pulldown menu)

什麼時候執行回調,可以是從不、改變時、釋放時、輸入鍵時,輸入的鍵值只在文本輸入框中有用。還有一些很少用到但是有用的when()值沒有包含在菜單中,你應該在額外代碼域中放入這些值。

No Change (button)

No Change按鈕意味着如果數據沒有改變回調就在匹配事件發生時執行。

11.8 Selecting and Moving Widgets

      如果窗口沒有顯示,則在瀏覽器中雙擊窗口名將顯示窗口。從顯示的窗口中你可以選擇構件,構件組,移動或者調整大小。要關閉窗口可以雙擊它或者按ESC鍵。點擊構件可以選中它,要選擇多個構件,可以拖拽一個覆蓋它們的矩形,按着shift鍵將切換選中的構件【???】。你無法選中隱藏的構件。如果構件完全被其他構件覆蓋你也無法選中它。(此時應該)使用瀏覽器選中構件。

      選中的構件顯示時有一個紅色的邊框線,你可以通過這個邊框來移動構件,你也可以通過外邊沿或者角來拖動調整大小。拖動鼠標時按下Alt鍵可以在精確定位時避免捕捉到的網格副作用【??】。

      如果有tab控件顯示,你可以通過選擇文件tab來改變可見的子窗口。你拾取的子窗口將被選中。

      通過箭頭方向鍵、tab鍵和shift+tab鍵可以導航選擇,左、右、tab或者shift+tab可以在層中在前一個後一個構件之間移動。點擊向右箭頭足夠次數的話可以遍歷選中窗口中的所有構件。上下鍵可以在水平覆蓋的構件之間移動。如果導航無效的話你可能需要排序構件,如果你的窗口中有輸入域的話這是很重要的,因爲FLTK在輸入框之間移動時使用相同的方式。

      要打開一個構件,雙擊打開。要打開多個構件選中它們然後按F1或者點擊彈出菜單的”Edit/Open”。按下Ctrl+o可以在不改變選擇的情況下暫時取消邊框,以便看清構件的邊界。

      你可以通過窗口管理邊界控件調整窗口大小。FLTK將試圖將窗口的大小向最近的網格圓整並且使得它足夠大能夠包含所有的構件(它使用合法的X方法,所以對一些窗口管理器而言它可能會barf【??】)【??】。注意在你的程序中窗口可能是不能改變大小的,如果可以的話,對於子構件的作用可能是不同的。

      窗口的面板(雙擊時打開的)對所有其他的Fl_Widget幾乎是相同的。還有其他三項:【??】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章