亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1539 | 回復(fù): 0
打印 上一主題 下一主題

【武漢華嵌】Linux下Qt多線程編程 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-11 16:05 |只看該作者 |倒序?yàn)g覽
Linux下Qt多線程編程

作者:武漢華嵌技術(shù)部



以下和大家分享Linux平臺(tái)下Qt兩種多線程編程的方式:

1、使用Linux平臺(tái)下的線程函數(shù)。以下是給出的代碼片段:
//此處為連接信號(hào)和槽,通過(guò)Qt界面中兩按鈕來(lái)控制兩個(gè)槽函數(shù)

connect(pthred1start, SIGNAL(clicked()), this, SLOT(pthread1start()));

connect(pthred1stop, SIGNAL(clicked()), this, SLOT(pthread1stop()));

/***************************linux平臺(tái)下的線程****************************/

//此函數(shù)為線程處理函數(shù)

void *mythread(void *arg)

{

Qt1 *tt = (Qt1 *)arg;  //接收qt1的this指針

tt->i = 0;

while(1)

{

        (tt->i)++;

        qDebug()<<"i is : "<<tt->i;

        //通過(guò)接收來(lái)的指針操作qt1的界面

        tt->LeFirst->setText(QString::number(tt->i));            

        sleep(1);

}

}



void Qt1::pthread1start()

{

//在槽函數(shù)中通過(guò)Linux下的線程函數(shù)來(lái)創(chuàng)建一個(gè)線程,并且

//把Qt1中的this指針傳到線程函數(shù)中

int ret = pthread_create(&ptid, NULL, mythread, (void *)this);

if(ret != 0)

{

        printf("wrong\n");

}

}



void Qt1::pthread1stop()

{      

//關(guān)閉線程

pthread_cancel(ptid);

}



2、使用QT自帶的線程類(lèi)。以下是給出的代碼片段:
要使用QT自帶的線程類(lèi),來(lái)實(shí)現(xiàn)多線程編程,需要子類(lèi)化QThread,并且重新實(shí)現(xiàn)它的run()函數(shù)就可以了。如下所示:

//子類(lèi)化QThread

class myThread: public QThread

{

Q_OBJECT

public:

myThread(QWidget *parent = 0);

~myThread();

void run();

Qt1 *tt;

int i;

};

/*******************qt自帶線程*************************/

//子類(lèi)化QThread的構(gòu)造函數(shù)的實(shí)現(xiàn),并且對(duì)成員變量進(jìn)行初始化

myThread::myThread(QWidget *parent)

{

i = 0;

tt = (Qt1 *)parent;//保存qt1對(duì)象的this指針的值

}

myThread::~myThread()

{

}

/**************qt自帶線程start后,會(huì)自動(dòng)執(zhí)行run函數(shù)*********/

//重新實(shí)現(xiàn)QThread的run()函數(shù)

void myThread::run()

{

while(1)

{

        (tt->i)++;

        qDebug()<<"i is : "<<(tt->i);

//通過(guò)接收的this指針的值,來(lái)操作qt1對(duì)象的界面

tt->LeFirst->setText(QString::number(tt->i));

        sleep(1);

}

}



以上是實(shí)現(xiàn)了自己的線程類(lèi),然后就如何使用了,使用如下:

在界面的構(gòu)造函數(shù)中有如下代碼:

//生成一個(gè)自己實(shí)現(xiàn)的qt中的線程類(lèi)對(duì)象

thread = new myThread(this);

//通過(guò)兩個(gè)控件來(lái)控制線程的開(kāi)始和結(jié)束

connect(qthreadstart, SIGNAL(clicked()), this, SLOT(pthread2start()));

connect(qthreadstop, SIGNAL(clicked()), this, SLOT(pthread2stop()));

void Qt1::pthread2start()

{

thread->start();//啟動(dòng)qt線程

}



void Qt1::pthread2stop()

{

thread->terminate();//停止qt線程

}



注意:

       以上都只是給出了線程的使用,但是,在程序中如何使用得視情況而定。



更多技術(shù)文章敬請(qǐng)關(guān)注:武漢華嵌-嵌入式培訓(xùn)專(zhuān)家,國(guó)內(nèi)領(lǐng)先的嵌入式服務(wù)機(jī)構(gòu),

http://www.embedhq.org
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP