本人是最近才學習用 qt 做東西,不知道是自己的基礎太差,還是什麼問題。下面的問題顯得非常不可思議。
我想要做乙個這樣的介面:
定義乙個由10個堅直的滑塊形成的控制項:
(**段1)
class curvebase : public qwidget
;
curvebase,裡面有乙個 m_lables , m_sliders 成員變數。
m_sliders為10個滑塊控制器。
然後看定義乙個normalcurve類,該類出包換乙個curvebase成員變數。
(**段2)
class normalcurve : public qdialog
;
可見 normalcurve 類中有乙個 vector m_data 元素,還有乙個 quint8 m_focus_on 成員變數。
現在,我在 main() 中呼叫
(**段3)
int main(int argc, char *argv)
1、首先定義乙個 vect 容器,vect(10, 137),就是向容器裡裝 10 個 值為 137 的 qint16 型別的元素。
2、定義乙個 normalcurve 型別的 dlg ,並顯示。
3、然後,我列印一下 vect 容器內的所有元素的值。
當dlg 被例項化時,就會呼叫 normalcurve 的建構函式,問題就出在 可以 normalcurve 建構函式上。該函式的實現如下:
normalcurve::normalcurve(qstring title , qstring unit ,
qint16 min , qint16 max , bool dot ,
const qvector& srcdata , qdialog *parent) :
qdialog(parent)
}buildwidget();m_curve->setrange(min,max,dot);}
在程式執行到這個函式時,min = 125 , max = 160 , srcdata[0~9] = 137;
在for 迴圈中 m_data[0~9] 的值都被賦成了 137 。
可就是呼叫了 m_curve->setrange( min, max , dot ) 後,m_data[0~9] 的值全變成了 125 去了。而且,m_focus_on 變成了 9.
我想不明白的是,呼叫 m_curve 的成員函式,怎麼會改變 m_data 與 m_focus_on 的值呢?
m_curve->setrange() 函式的具體實現如下 :
void curvebase::setrange( qint16 min , qint16 max , bool isdot ) //設定值的範圍
……}
特別指出,normalcurve::m_data[0~9] 的值是在 curvebase::setrange 函式作 m_sliders[i]->setrange( min , max ) 時被改變的。
同時被改變的還有 normalcurve::m_focus_on 。
請 qt 達人指點,我真是無計可施了。
很好很強大
adobe太厲害了吧,他的軟體做的好細緻啊。老師給過乙個adobe cs3,包括了adobe的全套產品,但是由於對機器的要求高,俺裝不上,也跑不起來。相比來講超星就要粗糙的多了,看作品就知道誰是高手誰是低手了。又去看了adobe的 感覺兩個字 專業。這年頭你不專業能行嗎?所以我決定以後多多學習高人的...
Oracle很好 很強大
oracle很好 很強大 oracle預設有3個使用者分別為sys使用者預設密碼為change on install,system使用者預設密碼為manager,scott使用者預設密碼為tiger sys使用者為超級管理員 對應的角色為dba 資料庫管理員 system使用者為系統管理員 對應的角...
irrlicht 這個引擎很強大。。。
上次在sourceforge.net 大名鼎鼎的開源 上看到的,這個irrlicht真很了不起,雖然是開源的,不過感覺已經達到那些幾萬美元的商業級的3d引擎上具有的特性。而且跨平台,寫一次 可以在多種作業系統上編譯。支援.3ds,md2,obj,pk3,ms3d,bsp,x,bmp,tga,jpg,...