![NOKIAQT培訓資料_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/9/12f2c044-6ea0-45cf-a917-a7f41a88488c/12f2c044-6ea0-45cf-a917-a7f41a88488c1.gif)
![NOKIAQT培訓資料_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/9/12f2c044-6ea0-45cf-a917-a7f41a88488c/12f2c044-6ea0-45cf-a917-a7f41a88488c2.gif)
![NOKIAQT培訓資料_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/9/12f2c044-6ea0-45cf-a917-a7f41a88488c/12f2c044-6ea0-45cf-a917-a7f41a88488c3.gif)
![NOKIAQT培訓資料_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/9/12f2c044-6ea0-45cf-a917-a7f41a88488c/12f2c044-6ea0-45cf-a917-a7f41a88488c4.gif)
![NOKIAQT培訓資料_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/9/12f2c044-6ea0-45cf-a917-a7f41a88488c/12f2c044-6ea0-45cf-a917-a7f41a88488c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.qt的對象模型和信號槽的概念qt in educationthis work is a chinese translation of the original qt educational training materials published by nokia: 2010 nokia corporation and its subsidiary(-ies).nokia, qt and the nokia and qt logos are the registered trademarks of nokia corporation in finland and other countrie
2、s worldwide.this translation was created by communication and computer network laboratory of guangdong province, south china university of technology. 2010 communication and computer network laboratory of guangdong province, south china university of technology.the enclosed qt educational training m
3、aterials are provided under the creative commons attribution-non-commercial-share alike 2.5 license agreement. the full license text is available here: /licenses/by-nc-sa/2.5/legalcode. 此文檔內(nèi)容是由諾基亞公司發(fā)布的原創(chuàng)qt教育培訓文檔的中文翻譯: 2010諾基亞公司及其附屬公司。nokia (諾基亞),qt以及nokia與qt商標是nokia公司在芬蘭和全球其
4、他國家的注冊商標。 該翻譯版本由 華南理工大學廣東省計算機網(wǎng)絡(luò)重點實驗室 創(chuàng)造。 2010 華南理工大學廣東省計算機網(wǎng)絡(luò)重點實驗室 本qt 教育培訓材料依照署名-非商業(yè)性使用-相同方式共享 2.5許可協(xié)議(creative commons attribution-non-commercial-share alike 2.5 license agreement)發(fā)布。 完整的許可證文本可以在這里找到:/licenses/by-nc-sa/2.5/legalcode。 qobject類qobject是幾乎所有qt類和所有部件(widget)的基類。
5、它包含很多組成qt的機制事件信號和槽屬性內(nèi)存管理qobject類qobject 是大部分qt 類的基類例外的例子是:類需要作為輕量級的類,例如圖元(graphical primitives)。數(shù)據(jù)容器(qstring, qlist, qchar等)需要可復制的類,因為qobject類是無法被復制的。qobject類它們可以擁有一個名字 (qobject:objectname)它們被放置在qobject實例的一個層次上它們可以有到其他 qobject 實例的聯(lián)接例子: 在運行時復制一個部件有意義嗎?“qobject 的實例是單獨的!”元數(shù)據(jù)(meta data)qt用c+實現(xiàn)內(nèi)省每一個 qobj
6、ect 都有一個元對象元對象涉及:類名 (qobject:classname)繼承 (qobject:inherits)屬性信號和槽普通信息(qobject:classinfo)元數(shù)據(jù)元數(shù)據(jù)通過元對象編譯器(moc)在編譯時組合在一起。sources*.cppexecutablesobject files*.oheaders*.h普通的普通的c+生成過程生成過程includescompileslinks元數(shù)據(jù)meta data元數(shù)據(jù)通過元對象編譯器(moc)在編譯時組合在一起。moc從頭文件里面獲得數(shù)據(jù)。sources*.cppexecutablesobject files*.oheaders
7、*.hgeneratedmoc_*.cppqt c+ 生成過程生成過程includescompileslinkscompilesmocs元數(shù)據(jù)moc 找什么?class myclass : public qobject q_object q_classinfo(author, john doe)public: myclass(const foo &foo, qobject *parent=0); foo foo() const;public slots: void setfoo( const foo &foo );signals: void foochanged( foo );
8、private: foo m_foo;qt 關(guān)鍵字類的一般信息 q_object宏, 通常是第一步首先確認該類繼承自 qobject (可能是間接)內(nèi)省(introspection)類在運行時了解它們自己的信息對實現(xiàn)腳本和動態(tài)語言的綁定 有很好的支持。if (object-inherits(qabstractitemview) qabstractitemview *view = static_cast(widget); view-.enum capitalsenum oslo, helsinki, stockholm, copenhagen ;int index = object-metaob
9、ject()-indexofenumerator(capitalsenum);object-metaobject()-enumerator(index)-key(object-capital();能夠?qū)崿F(xiàn)動態(tài)轉(zhuǎn)換而不需要運行時類型檢查( rtti)例子:它可以將枚舉值轉(zhuǎn)換成更容易閱讀和保存的字符串元對象了解細節(jié)屬性(properties)qobject有g(shù)etter和setter函數(shù)屬性命名策略: color, setcolor對于布爾: isenabled, setenabledclass qlabel : public qframe q_object q_property(qstring
10、text read text write settext)public: qstring text() const;public slots: void settext(const qstring &);setter, 返回空,將值當成唯一參數(shù)getter, 常量,返回值,沒有參數(shù)屬性為什么使用setter 函數(shù)?可以驗證設(shè)置對可能的變化作出反應(yīng)void setmin( int newmin ) if( newmin m_max ) qwarning(ignoring setmin(%d) as min max., newmin); return; .void setmin( int
11、newmin ) . m_min = newmin; updateminimum();屬性properties為什么使用getter 函數(shù)?間接的屬性qsize size() const return m_size;int width() const return m_size.width();屬性 q_property(type name read getfunction write setfunction reset resetfunction notify notifysignal designable bool scriptable bool stored bool user bool
12、 constant final)使用屬性直接獲取通過元信息和屬性系統(tǒng)在運行時發(fā)現(xiàn)屬性qstring text = label-text();label-settext(hello world!);qstring text = object-property(text).tostring();object-setproperty(text, hello world);int qmetaobject:propertycount();qmetaproperty qmetaobject:property(i);qmetaproperty:name/isconstant/isdesignable/rea
13、d/write/.動態(tài)屬性在運行時給對象增加屬性可以用來“標識”對象,等等。bool ret = object-setproperty(name, value);qobject:dynamicpropertynames() const真:如果屬性經(jīng)過真:如果屬性經(jīng)過q_property 定義 假:如果只是動態(tài)增加假:如果只是動態(tài)增加返回一個動態(tài)屬性的列表創(chuàng)建自定義屬性class angleobject : public qobject q_object q_property(qreal angle read angle write setangle)public: angleobject(qr
14、eal angle, qobject *parent = 0); qreal angle() const; void setangle(qreal);private: qreal m_angle;宏,描述屬性初始化值gettersetter私有狀態(tài)創(chuàng)建自定義屬性angleobject:angleobject(qreal angle, qobject *parent) : qobject(parent), m_angle(angle)qreal angleobject:angle() const return m_angle;void angleobject:setangle(qreal ang
15、le) m_angle = angle; dosomething();初始化值getter 簡單返回值。這里你可以計算復雜的值。更新內(nèi)部狀態(tài), 對變化作出反應(yīng)。自定義屬性 - 枚舉class angleobject : public qobject q_object q_enums(anglemode) q_property(anglemode anglemode read .)public: enum anglemode radians, degrees; .;普通枚舉聲明。宏通知qt anglemode 是一個枚舉類型。屬性使用枚舉作為類型。內(nèi)存管理qobject 可以有父對象和子對象當一
16、個父對象被刪除,它的子對象也同樣被刪除。qobject *parent = new qobject();qobject *child1 = new qobject(parent);qobject *child2 = new qobject(parent);qobject *child1_1 = new qobject(child1);qobject *child1_2 = new qobject(child1);delete parent;parentchild1child2child1_1child1_2parent 刪除 child1 和 child2child1 刪除 child1_1
17、和 child1_2內(nèi)存管理當需要實現(xiàn)視覺層級時使用到它。qdialog *parent = new qdialog();qgroupbox *box = new qgroupbox(parent);qpushbutton *button = new qpushbutton(parent);qradiobutton *option1 = new qradiobutton(box);qradiobutton *option2 = new qradiobutton(box);delete parent;parent 刪除 box 和 buttonbox 刪除 option1 和 option2使用
18、模式使用 this指針指向最高層父對象在棧上分配父對象空間void widget:showdialog() dialog dialog; if (dialog.exec() = qdialog:accepted) . dialog:dialog(qwidget *parent) : qdialog(parent) qgroupbox *box = qgroupbox(this); qpushbutton *button = qpushbutton(this); qradiobutton *option1 = qradiobutton(box); qradiobutton *option2 =
19、qradiobutton(box); .dialog 在作用范圍結(jié)束時被刪除堆(heap)當使用 new 和 delete時, 內(nèi)存在堆中分配。堆內(nèi)存空間必須通過 delete 完全釋放,以防止內(nèi)存泄漏。只要有需要,分配在堆上的對象可以一直存活下去。newdelete構(gòu)造構(gòu)造construction析構(gòu)析構(gòu)destruction棧(stack)局部變量在棧上分配。棧變量超過作用范圍時會自動釋放。分配在棧中的對象在超出作用范圍時總是會被析構(gòu)。int a構(gòu)造構(gòu)造construction析構(gòu)析構(gòu)destruction堆 和 棧想要自動內(nèi)存管理,只有父對象需要在棧上分配。mymainwindowqap
20、plicationint main(int argc, char *argv) qapplication a(argc, argv); mymainwindow w; w.show(); return a.exec();mymainwindow:mymainwindow(. new qlabel(this); new .改變所有者qobject可以修改它所屬的父對象。父對象知道何時子對象被刪除一系列函數(shù)實現(xiàn)返回指針,從其所有者“拿走”釋放的數(shù)據(jù),把它留給拿取者處理obj-setparent(newparent);delete listwidget-item(0); / 刪除第一個item(不安
21、全)qlayoutitem *qlayout:takeat(int);qlistwidgetitem *qlistwidget:takeitem(int);/ safe alternativeqlistwidgetitem *item = listwidget-takeitem(0);if (item) delete item; item列表本質(zhì)上并不是子對象,而是擁有者。 這個例子進行了說明。構(gòu)造規(guī)范幾乎所有的 qobject 都有一個默認為空值的父對象。qwidget 的父對象是其它 qwidget類為了方便傾向于提供多種構(gòu)造(包括只帶有父對象的一種)父對象通常是帶缺省值的第一個參數(shù)。 q
22、label(const qstring &text, qwidget *parent=0, qt:windowflags f=0);qobject(qobject *parent=0);qpushbutton(qwidget *parent=0);qpushbutton(const qstring &text, qwidget *parent=0);qpushbutton(const qicon &icon, const qstring &text, qwidget *parent=0);構(gòu)造規(guī)范當創(chuàng)建自己的 qobject時, 需考慮總是允許父對象 paren
23、t 為 0 (null)有一個只接受父對象的構(gòu)造函數(shù)parent 是帶默認值的第一個參數(shù)提供幾種構(gòu)造函數(shù),避免空值、無效值(e.g. qstring()作為參數(shù)。休息信號(signal)和槽(slot)通過反饋的方式動態(tài)地或松散地將事件和狀態(tài)變化聯(lián)系起來。是什么使 qt 運作?動作中的信號和槽emit clicked();動作中的信號和槽private slots: void on_addbutton_clicked(); void on_deletebutton_clicked();connect(clearbutton,signal(clicked(),listwidget,slot(cl
24、ear();connect(addbutton,signal(clicked(),this,slot(.);2xclear();動作中的信號和槽 . emit clicked(); . . emit clicked(); . . emit clicked(); . qstring newtext = qinputdialog:gettext(this, enter text, text:); if( !newtext.isempty() ) ui-listwidget-additem(newtext); foreach (qlistwidgetitem *item, ui-listwidget
25、-selecteditems() delete item; clear();信號和槽 vs 回調(diào)回調(diào)(callback)是一個函數(shù)指針,當一個事件發(fā)生時被調(diào)用,任何函數(shù)都可以被安排作為回調(diào)。沒有類型安全總是以直接調(diào)用方式工作信號和槽的方式更加動態(tài)一個更通用的機制更容易互連兩個已存在的類相關(guān)類之間涉及更少的知識共享什么是槽?槽在各種槽段(section)中定義。槽可以返回值,但并不是通過聯(lián)接。任何數(shù)量的信號可以關(guān)聯(lián)到一個槽。它以一個普通的函數(shù)實現(xiàn)。它可以作為普通函數(shù)被調(diào)用。public slots: void apublicslot();protected slots: void aprotec
26、tedslot();private slots: void aprivateslot();connect(src, signal(sig(), dest, slot(slt();什么是信號?信號在信號段(section)中定義信號總是返回空信號總是不必實現(xiàn)由moc來提供實現(xiàn)信號可以關(guān)聯(lián)到任意數(shù)量的槽上通常產(chǎn)生一個直接調(diào)用,但是可以在線程之間作為事件來傳遞,甚至可以用在套接字之間(使用第三方類) 槽能以任意次序被激發(fā)信號使用emit 關(guān)鍵字發(fā)射出去。signals: void asignal();emit asignal();建立關(guān)聯(lián)qobject:connect( src, signal( s
27、ignature ), dest, slot( signature ) ); ( . )clicked()toggled(bool)settext(qstring)textchanged(qstring)rangechanged(int,int)settitle(qstring text)setvalue(42)簽名由函數(shù)名和參數(shù)類型組成。不允許有變量名或值。簽名由函數(shù)名和參數(shù)類型組成。不允許有變量名或值。自定義類型降低了可重用性自定義類型降低了可重用性qobject*setitem(itemclass)建立關(guān)聯(lián)qt 參數(shù)可以忽略,但不能無中生有。signalsrangechanged(int
28、,int)rangechanged(int,int)rangechanged(int,int)valuechanged(int)valuechanged(int)valuechanged(int)textchanged(qstring)clicked()clicked()slotssetrange(int,int)setvalue(int)updatedialog()setrange(int,int)setvalue(int)updatedialog()setvalue(int)setvalue(int)updatedialog()自動關(guān)聯(lián)使用designer,它很便捷地在接口和用戶代碼之間提
29、供自動關(guān)聯(lián)。通過調(diào)用qmetaobject:connectslotsbyname觸發(fā)當命名時考慮重用性比較 on_widget_signal 和 updatepagemarginson_ object name _ signal name ( signal parameters )on_addbutton_clicked();on_deletebutton_clicked();on_listwidget_currentitemchanged(qlistwidgetitem*,qlistwidgetitem*)updatepagemargins可以關(guān)聯(lián)到一定數(shù)量信號或直接調(diào)用。值同步雙向連接 無
30、限循環(huán)必須停止 沒有信號被發(fā)射,除非發(fā)生實際的變化。connect(dial1, signal(valuechanged(int), dial2, slot(setvalue(int);connect(dial2, signal(valuechanged(int), dial1, slot(setvalue(int);void qdial:setvalue(int v) if(v=m_value) return; .這就是負責發(fā)射信號的所有代碼在您自己的類中不要忘記它。自定義信號和槽class angleobject : public qobject q_object q_property(q
31、real angle read angle write setangle notify anglechanged)public: angleobject(qreal angle, qobject *parent = 0); qreal angle() const;public slots: void setangle(qreal);signals: void anglechanged(qreal);private: qreal m_angle;在這里添加一個通知信號。setter構(gòu)造自然槽。信號匹配settersetter實現(xiàn)細節(jié)void angleobject:setangle(qreal
32、angle) if(m_angle = angle) return; m_angle = angle; emit anglechanged(m_angle);防止無限循環(huán)。不要忘記不要忘記!更新內(nèi)部狀態(tài),然后發(fā)射信號。信號是被“保護”的,他們可以從派生類發(fā)射。溫度轉(zhuǎn)換器使用 tempconverter 類實現(xiàn)在攝氏與華氏之間的轉(zhuǎn)換當溫度改變時發(fā)射信號。溫度轉(zhuǎn)換器對話窗口(dialog window)包含以下對象一個 tempconverter 實例兩個 qgroupbox 部件(widget), 每一個包含一個 qdial 部件一個 qlcdnumber 部件溫度轉(zhuǎn)換器class tempco
33、nverter : public qobject q_object public: tempconverter(int tempcelsius, qobject *parent = 0); int tempcelsius() const; int tempfahrenheit() const;public slots: void settempcelsius(int); void settempfahrenheit(int);signals: void tempcelsiuschanged(int); void tempfahrenheitchanged(int);private: int m
34、_tempcelsius;先是q_object 宏qobject 作為父對象父對象指針讀和寫函數(shù)當溫度變化時發(fā)射信號。在內(nèi)部表示整數(shù)攝氏度。溫度轉(zhuǎn)換器void tempconverter:settempcelsius(int tempcelsius) if(m_tempcelsius = tempcelsius) return; m_tempcelsius = tempcelsius; emit tempcelsiuschanged(m_tempcelsius); emit tempfahrenheitchanged(tempfahrenheit();void tempconverter:se
35、ttempfahrenheit(int tempfahrenheit) int tempcelsius = (5.0/9.0)*(tempfahrenheit-32); settempcelsius(tempcelsius);settempcelsius槽:settempfahrenheit槽:測試改變以中斷遞歸更新對象的狀態(tài)發(fā)射信號反映改變轉(zhuǎn)換,傳遞攝氏度是內(nèi)部表現(xiàn)形式。溫度轉(zhuǎn)換器表盤通過 tempconverter 聯(lián)系起來lcd 顯示直接受表盤來驅(qū)動。tempconvertersettempcelsiussettempfahrenheittempcelsiuschangedtempfah
36、renheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged displayconnect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiuslcd, slot(d
37、isplay(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechanged(int), tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconverter, si
38、gnal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiuschangedtempfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged display
39、connect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiuslcd, slot(display(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechanged(int),
40、 tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconverter, signal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiuschangedtem
41、pfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged displayconnect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiuslcd, sl
42、ot(display(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechanged(int), tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconverter
43、, signal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiuschangedtempfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged dis
44、playconnect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiuslcd, slot(display(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechanged(i
45、nt), tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconverter, signal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiuschange
46、dtempfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged displayconnect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiuslcd
47、, slot(display(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechanged(int), tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconve
48、rter, signal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiuschangedtempfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged
49、 displayconnect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiuslcd, slot(display(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechang
50、ed(int), tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconverter, signal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiusch
51、angedtempfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluevaluechanged displayconnect(celsiusdial, signal(valuechanged(int), tempconverter, slot(settempcelsius(int);connect(celsiusdial, signal(valuechanged(int), celsiu
52、slcd, slot(display(int);connect(tempconverter, signal(tempcelsiuschanged(int), celsiusdial, slot(setvalue(int);connect(fahrenheitdial, signal(valuechanged(int), tempconverter, slot(settempfahrenheit(int);connect(fahrenheitdial, signal(valuechanged(int), fahrenheitlcd, slot(display(int);connect(tempconverter, signal(tempfahrenheitchanged(int), fahrenheitdial, slot(setvalue(int);溫度轉(zhuǎn)換器用戶調(diào)節(jié)攝氏度表盤。tempconvertersettempcelsiussettempfahrenheittempcelsiuschangedtempfahrenheitchangedvaluechanged settempcelsiusvaluechanged settempfahrenheittempcelsiuschanged setvaluetempfahrenheitchanged setvaluev
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 12富起來到強起來《改革創(chuàng)新謀發(fā)展》(說課稿)-統(tǒng)編版道德與法治五年級下冊
- 4鄧小平爺爺植樹說課稿-2023-2024學年二年級下冊語文統(tǒng)編版
- 2024-2025學年新教材高中歷史 第7單元 中國共產(chǎn)黨成立與新民主主義革命興起 第21課 五四運動與中國共產(chǎn)黨的誕生同步說課稿 新人教版必修《中外歷史綱要(上)》
- 10我們所了解的環(huán)境污染 第一課時 說課稿-2024-2025學年道德與法治四年級上冊統(tǒng)編版001
- 2024七年級英語下冊 Unit 7 Sports and Good Health Lesson 41 Were People Healthy Then說課稿(新版)冀教版001
- 2024-2025學年八年級政治上冊 第一單元 讓愛駐我家 第一課 相親相愛一家人 第一框 家溫馨的港灣說課稿 魯教版
- 11《產(chǎn)生泡泡的秘密》說課稿-2024-2025學年科學五年級上冊粵教科技版001
- 割灌機項目融資渠道探索
- 6《光的反射現(xiàn)象》說課稿 -2024-2025學年科學五年級上冊教科版
- 10父母多愛我-多一些理解(第2課時)(說課稿)2023-2024學年統(tǒng)編版道德與法治三年級上冊
- 重大事故隱患判定標準與相關(guān)事故案例培訓課件
- 2024年度節(jié)后復工建筑施工安全培訓交底
- 火龍罐綜合灸療法
- 紅色中國風西安旅游PPT模板
- 皮內(nèi)注射技術(shù)操作考核評分標準
- 個人借條電子版模板
- 工業(yè)企業(yè)電源快速切換裝置設(shè)計配置導則
- 年產(chǎn)3萬噸噴氣紡、3萬噸氣流紡生產(chǎn)線項目節(jié)能評估報告
- GB/T 1094.1-2013電力變壓器第1部分:總則
- 胸外科診療指南和操作規(guī)范
- 電網(wǎng)基本知識
評論
0/150
提交評論