1. 程式人生 > >利用QT的QThread將一個類中的成員函式轉到執行緒下執行

利用QT的QThread將一個類中的成員函式轉到執行緒下執行

#include "displaythread.h"
#include "mainwindow.h"

DisplayThread::DisplayThread(MainWindow *pWindow, QObject *parent) :
    QThread(parent)
{
    m_pWindow = pWindow;
}

void DisplayThread::run()
{
    m_pWindow->display();
}

void MainWindow::on_pushButton_clicked()
{
    DisplayThread *pThread = new DisplayThread(this);
    pThread->start();
}

void MainWindow::display()
{
    ui->label->setPixmap(QPixmap(":/images/button.jpg"));
}

      在mainwindow類中建立一個Button,連線一個槽函式display,考慮到槽函式執行過程中別的功能的實現,將display移到新的執行緒下。DisneyThread繼承了QThread並且將MainWindow類傳入,重寫執行緒的run()函式,在run()函式中呼叫display,這樣就可以保證display執行的過程中,MainWindow的其他功能可以同時實現了。

     第一次寫博文,還是參照sourire_will的程式碼,十分感謝。

相關推薦

利用QT的QThread一個成員函式執行執行

#include "displaythread.h" #include "mainwindow.h" DisplayThread::DisplayThread(MainWindow *pWindow, QObject *parent) : QThread(pare

C++ 成員函式分析

概述之前對成員變數的分佈進行了整理,今天就對成員函式進行整理。 1、非靜態成員函式C++的設計準則之一就是:非靜態成員函式至少和一般的非成員函式的執行效率相同。 為了實現上衣準則,編譯器會對非靜態成員函式進行改進,先看下面的例子: float func(const Point3d* _this) { .

一個成員函式宣告為另一個的友元函式

友元提供了不同類的成員函式之間、類的成員函式與一般函式之間進行資料共享的機制。通過友元,一個不同函式或另一個類中的成員函式可以訪問類中的私有成員和保護成員。c++中的友元為封裝隱藏這堵不透明的牆開了一個小孔,外界可以通過這個小孔窺視內部的祕密。 友元的正確使用能提高程式的執

【C++】成員函式聲明後面接 const

const 表示對類中成員函式屬性的宣告; 表示不會修改類中的資料成員; 在編寫const成員函式時,若不慎修改了資料成員,或者呼叫了其他非const成員函式,編譯器將指出錯誤; 以下程式中,類stack的成員函式GetCount僅用於計數,從邏輯上講GetCount應

什麼時候可以不用例項化物件就可以呼叫成員函式

對於一個類A,對於這個定義((A*)0)或者 A *p = NULL 都可以呼叫類中的那些成員函式。         第一種情況:非靜態成員函式沒有使用類的非靜態資料成員,呼叫的其他非靜態成員函式也不

python裡使用dir函式檢視一個所有成員函式

如果一個類是別人編寫的,又沒有幫助文件,怎麼樣來檢視所有成員函式呢?就可以使用下面的程式碼:# File: builtin-dir-example-2.py class A: def a(self): pass def b(self):

什麼是回撥函式,如何定義和實現一個成員函式為回撥函式()

C/C++中回撥函式初探    簡介   對於很多初學者來說,往往覺得回撥函式很神祕,很想知道回撥函式的工作原理。本文將要解釋什麼是回撥函式、它們有什麼好處、為什麼要使用它們等等問題,在開始之前,假設你已經熟知了函式指標。   什麼是回撥函式?   簡而言之,回撥函

成員函式呼叫問題

虛擬函式執行時,跟指標型別沒有關係;跟作用域和虛擬函式表(new出來的物件有關)有關係;        如果有作用域,根據作用域執行(不會走虛擬函式表,直接到程式碼段找),與new的型別和指標型別沒有關係;        如果沒有作用域關鍵詞則根據虛擬函式表(與new物件有

C++一個訪問另外一個成員變數或者成員函式

1.在一個類中定義另外一個類的成員為指標型別。並用this指標管理物件的記憶體,實現資料的傳遞。 #include <stdio.h> class A { public: A(); ~A(); void SetData(int year, int month, int day);

c++一個同名的const成員函式與非const成員函式為什麼可以構成過載

#include<iostream> using namespace std; class Test { public: Test(int v):data(v){} void print()//this指標的型別是Test * { cout<&

派生的建構函式,可以作為成員變數進行初始化

#include<stdio.h> #include<string> #include<iostream> using namespace std; class

指向成員函式指標 (對外建立一個測試函式介面測試私有函式介面)

程式碼單元測試時候,怎樣讓外部測試自己私有函式介面了, 此處對外提供一個公有的函式測試介面,測試其私有介面函式 ,此處用指向類成員函式指標來實現 例子如下:   #include<QCoreApplication> #include<iostream&g

JavaSE8基礎 Class getDeclaredFields 獲取一個所有的成員變量

dsd scores ase sge 成員變量 demo 基礎 itcast 思考 禮悟: 好好學習多思考,尊師重道存感恩。葉見尋根三返一,活水清源藏於零。 虛懷若谷良心主,皓月當空自在王。願給最苦行無悔,誠勸且行且珍惜。

C++ 成員函式的靜態區域性變數

class A { public: A(){} ~A(){} int GetStaticNum(); }; int A::GetStaticNum() { static int i = 0;//靜態區域性變數屬於該方法,與類的例項無關 i++; return i; } int

Qt如何訊息在2個沒有關係的一個傳送到另一個

條件: ①2個類直接沒有任何關係; ②接收訊息的類必須有一個全域性變數; ③ QMetaObject::invokeMethod((QObject*)全域性變數類, "接收的方法", Qt::AutoConnection, Q_ARG(接收的引數型別, 接收的引數)); cla

關於“在內聯彙編不能呼叫成員函式“的誤解

        MSDN的"inline assembly"中明確說明:在__asm塊中只能呼叫未過載的全域性C++函式,不能呼叫過載的全域性C++函式或一個類的成員函式。在VC6.0中,的確不能使用內聯彙編呼叫類的成員函式。但是經本人試驗,在VC2003中可

【劍指offer】請實現一個函式一個字串的每個空格替換

劍指offer 題目如下 請實現一個函式,將一個字串中的每個空格替換成"%20"。 例如,當字串為We Are Happy, 則經過替換後的字串為 We%20Are%20Happy。 具體的程式碼實現如下 1.遍歷實現 public class Solution {

請實現一個函式一個字串的每個空格替換成指定符號。

題目描述 請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 /* 思路:從前向後記錄‘ ’數目,從後向前替換‘ ’。 重點:從後向前替換的時候的技巧 例如:“we are lucky”

java 劍指offer 第二題:請實現一個函式一個字串的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。

** public class Solution { public String replaceSpace(StringBuffer str) { 首先程式給出的引數是StringBuffer類,那麼我首先考慮的是就呼叫StringBuffer類的相關方法完成操作。

(C++)在外訪問一個的私有成員變數

通過公共函式為私有成員賦值 #include <iostream> using namespace std; class Test { privat