話說Qt很強大,可當下遇到的問題也太不過思議了吧!

2021-06-02 17:06:01 字數 1670 閱讀 7160

本人是最近才學習用 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,...