日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt工作笔记-在ListWidget中多线程检索数据

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt工作笔记-在ListWidget中多线程检索数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文件讀取技術在此鏈接中:

https://blog.csdn.net/qq78442761/article/details/79807826


在ListWidget中單線程檢索數據在此鏈接中:

https://blog.csdn.net/qq78442761/article/details/79809956


下面是多線程檢索,運行截圖如下:

主線程用紅色,子線程是紫色。


文件結構如下:



代碼如下:

widget.h

#ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QIODevice> #include <QFile> #include <QColor>#include "widget.h" #include "workthread.h"namespace Ui { class Widget; }class Widget : public QWidget {Q_OBJECTpublic slots:void pressBtn();void pressBtn2();void threadStart();void threadInUi(int row);public:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;WorkThread *thread; };#endif // WIDGET_H


workthread.h

#ifndef WORKTHREAD_H #define WORKTHREAD_H#include <QObject> #include <QDebug> #include <QThread> #include <QListWidget>class WorkThread : public QThread {Q_OBJECTsignals:void sendRow(int row);public:WorkThread(int low,int high,QListWidget *widget);protected:void run();private:int m_low;int m_high;QListWidget *m_widget;};#endif // WORKTHREAD_H


widget.cpp

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);connect(ui->pushButton,SIGNAL(clicked(bool)),this,SLOT(pressBtn()));connect(ui->pushButton_2,SIGNAL(clicked()),this,SLOT(pressBtn2()));connect(ui->pushButton_2,SIGNAL(clicked(bool)),this,SLOT(threadStart())); }void Widget::threadStart(){thread=new WorkThread((ui->label_2->text().toInt())/2,ui->label_2->text().toInt(),ui->listWidget);connect(thread,SIGNAL(sendRow(int)),this,SLOT(threadInUi(int)));thread->start(); }void Widget::threadInUi(int row){ui->listWidget->item(row)->setTextColor(0x9400D3); }void Widget::pressBtn2(){QString str="1111111111";for(int i=0;i<ui->label_2->text().toInt()/2;i++){if(ui->listWidget->item(i)->text()==str)ui->listWidget->item(i)->setTextColor(0xff0000);} }void Widget::pressBtn(){QFile file("d:/data.data");if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){qDebug()<<"打開失敗!";}while(!file.atEnd()){QByteArray line=file.readLine();QString str(line);str.remove("\n");ui->listWidget->addItem(str);}ui->label_2->setText(QString::number(ui->listWidget->count())); }Widget::~Widget() {delete ui; }


workthread.cpp

#include "workthread.h"WorkThread::WorkThread(int low, int high, QListWidget *widget) {m_low=low;m_high=high;m_widget=widget; }void WorkThread::run(){for(int i=m_low;i<m_high;i++){if("1111111111"==m_widget->item(i)->text()){emit sendRow(i);}} }

main.cpp

總結

以上是生活随笔為你收集整理的Qt工作笔记-在ListWidget中多线程检索数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。