首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Qt GUI 每秒刷新數據:QTimer 定時器驅動更新

     編輯:程式設計綜合問答

需求:主窗口每秒自動刷新顯示數據。標準方案:啟動 QTimer,連接 timeout() 信號到更新槽函數。

核心代碼

// 構造函數中
QTimer *timer = new QTimer(this);
connect(timer, &QTimer::timeout, this, &MainWindow::refreshData);
timer->start(1000); // 1000ms = 1s

// 槽函數
void MainWindow::refreshData() {
    // 1. 從數據源獲取最新數據
    // 2. 更新 UI 控件:label->setText(...), chart->updateSeries(...)
    // 3. 若耗時操作,移至工作線程,通過信號傳回主線程更新 UI
}

進階技巧

  • timer->setSingleShot(false)(默認)循環觸發
  • 高精度需求:timer->setTimerType(Qt::PreciseTimer)
  • 避免 UI 卡頓:耗時計算放 QtConcurrent::run 或 QThread
  • 頁面可見性優化:showEvent 啟動,hideEvent 停止定時器

替代方案

若數據源支持推送(WebSocket、MQTT、D-Bus),改用事件驅動比輪詢更高效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved