QT中使用另外的執行緒執行定時器(不用新建QThread子類)
在類定義public中新增
QThread* _TimerThread;
QTimer* _WriteTimer;
void WriteTimestop();
在private slot中新增
void _onWriteTimeout();
建構函式中新增:
在解構函式中新增:// 使用一個執行緒,跑定時器 _TimerThread = new QThread; _WriteTimer = new QTimer; // _WriteTimer->setSingleShot(true); //千萬不要新增這一行,新增後新執行緒只執行一下就結束了,造成定時器只會觸發一次timeout // 在moveToThread前先啟動定時器,不然不在一個執行緒裡,直接呼叫start會失敗 _WriteTimer->start(2000); _WriteTimer->moveToThread(_TimerThread); // 定時器物件和this不在一個執行緒裡面,因此這邊指定了連線方式為Qt::DirectConnection,由定時器所線上程直接觸發_onVoiceTimeout connect(_WriteTimer, SIGNAL(timeout()), this, SLOT(_onWriteTimeout()), Qt::DirectConnection); // 連線定時器槽,用來停止定時器 connect(this, SIGNAL(WriteTimestop()), _WriteTimer, SLOT(stop())); _TimerThread->start();
emit WriteTimestop();
_TimerThread->quit();
_TimerThread->wait();
delete _WriteTimer;
delete _TimerThread;
轉載自:http://blog.csdn.net/xwdpepsi/article/details/8607496
相關推薦
QT中使用另外的執行緒執行定時器(不用新建QThread子類)
編寫QT程式時,時常會需要使用定時器QTimer來執行一些定時任務,但當定時任務執行的時間過長,則會影響整個介面的響應,因此會想到使用另一個工作執行緒來執行定時器,一般情況下可以選擇從QThread派生一個執行緒類,然
《完美Qt》之執行緒呼叫定時器
線上程中呼叫定時器 嗨,大家好,我們都知道無論執行緒和定時器,這兩個單獨使用都非常簡單,Qt幫助文件有很詳細的Demo。但是線上程中使用定時器就稍微有點麻煩了,一不注意就容易掉坑裡。 首先理解connect的第五個引數很重要—連線型別 1、connec
多執行緒學習----定時器(二)
1.建立一個定時器,執行某個任務,第一次執行在10s鍾以後,之後每隔1s鍾執行一次。 new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("bom
【SSH網上商城專案實戰15】執行緒、定時器同步首頁資料(類似於部落格定期更新排名)
轉自:https://blog.csdn.net/eson_15/article/details/51387378 上一節我們做完了首頁UI介面,但是有個問題:如果我在後臺添加了一個商品,那麼我必須重啟一下伺服器才能重新同步後臺資料,然後重新整理首頁才能同步資
多執行緒&定時器Timer&同步&執行緒通訊&ThreadLocal
1.多執行緒 執行緒狀態分為:新建狀態、就緒狀態、執行狀態、阻塞狀態、死亡狀態 物件等待池的阻塞狀態:執行狀態執行了wait方法 對向鎖池的阻塞狀態:試圖獲得某個同步鎖,已經被其他執行緒佔用,就會放到物件的鎖池中 其他阻塞狀態:執行了s
linux 多執行緒 多定時器
linux則只允許單程序擁有一個定時器,因此在linux下的單程序中要使用多個定時器,則需要自己維護管理。 方法一: 程序中只有一個定時器,通過標誌位,可以在不同時間執行不同的任務。 方法二: Linux程序多個定時器 實現資料更新 資料上傳 #in
關於Java Web 使用Spring中使用Quartz(定時呼叫、實現固定時間執行), 觸發定時器(執行某些任務)的例項
第一步:pom.xml中Maven下載需要的jar架包。 <!--```````````定時器```````````--> <dependency> <grou
C# 執行緒:定時器的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { class
Python基礎34_執行緒-條件,定時器,佇列,執行緒池, 協程
執行緒 一. 條件 使得執行緒等待,只有滿足某條件時,才釋放n個執行緒 import time from threading import Thread,
C#多執行緒實現定時器
我們在寫winfrom時經常會用到定時器,比如客戶端通過socket定時向伺服器傳送檢測包等。.netframework提供了一個定時器控制元件System.Windows.Forms.Timer,使用很方便。 其實通過C#多執行緒也可以實現定時器功能。
多執行緒常用操作方法(sleep、yield、join)
執行緒的命名與取得 執行緒的命名: 通過構造方法在建立執行緒時設定執行緒名稱 直接繼承Thread類: public Thread (String name); Runable或者Callable介面實現多執行緒: public Thread (Run
java:執行緒池任務提交(Runnable、Callable、FutureTask)
任務的封裝與執行過程 (注:下面所說的Runnable物件,Callable物件都是指實現了該介面的類的物件) 之前要交給執行緒執行的任務我們都把它封裝在Runnable中。對於執行緒池而言,多了一種Callable的封裝方式。 Runnable:其中的run()方法沒有返回值。
iOS開發—執行緒之間資源共享(以賣火車票為例)—同步鎖的使用
程序中的一塊資源可能會被多個執行緒共享,也就是多個執行緒可能會訪問同一塊資源,這裡的資源包括物件、變數、檔案等。當多個執行緒同時訪問同一塊資源時,會造成資源搶奪,很容易引發資料錯亂和資料安全問題。 為了更好的理解執行緒安全的問題,引入一個賣票的案例,同
【STM32】SysTick滴答定時器(delay延時函式講解)
STM32F1xx官方資料:《Cortex-M3權威指南-中文》-第8章最後一個小節:Systick定時器SysTick定時器Systick定時器,是一個簡單的定時器,對於CM3、CM4核心晶片,都有Systick定時器。Systick定時器常用來做延時,或者實時系統的心跳時
idea同步svn中的maven專案,配置專案(帶Spring Boot啟動類)
同步svn專案 新建專案 制定svn地址,並從svn地址中checkout專案 選擇checkout的地址(本地專案放置地址,此地址不包含專案目錄),並點選ok 選擇專案放置的地址(在此處我選擇的是第三個地址。此地址包含專案名) 選擇jdk版本,根據自身情況選擇
MFC中關於檔案的讀取和儲存(使用CFile與CFileDialog類)
CFile::modeCreate 構造新檔案,如果檔案存在,則長度變為0 CFile::modeNoTruncate 該屬性和modeCreate聯合使用,可以達到如下效果:如果檔案存在,則不會將檔案的長度置為0,如果不存在,則會由modeCreate屬性來建立一個新檔案。
QT中使用GDAL多執行緒讀取遙感影象到QImage
GDAL 是一個很強大的可以讀取很多格式 的帶有GIS資訊的柵格型影象。前陣子專案中需要讀取遙感影象,並顯示到QT介面,由於遙感影象一般很大,所以採取新開一個讀圖執行緒的方式來讀取,防止介面假死。下面是程式碼共享,測試通過讀取500MB的24000*24000畫素GeoTiff圖並在QT的QGr
qt 中建立一個工作執行緒(例子)
當一個事件需要很長的處理時間,就建立一個工作執行緒,防止主介面卡死。 1.新建一個QT的gui專案,裡面包含main.cpp,mainwindow.h,mainwindow.cpp,mainwindow.ui檔案 2.新建一個頭檔案thread.h,派生一個執行緒類,重新寫一個執行緒的入口函式。
QT中QtConcurrent建立並行執行緒的方法
標頭檔案中: #include <QtConcurrentRun> #include <QProcess> #include <QFuture> protected: bool event(QEvent *even
qt資料庫多執行緒問題的解決(QSqlDatabase 同一個連線只能在建立它的執行緒中使用)
注意:連線名和資料庫名是完全兩樣東西 Qt資料庫由QSqlDatabase::addDatabase()生成的QSqlDatabase只能在建立它的執行緒中使用, 在多執行緒中共用連線或者在另外一個執行緒中建立query都是不支援的 幾乎國內沒有文章提到這個問題,這幾天