Qt工作笔记-在ListWidget中多线程检索数据
生活随笔
收集整理的這篇文章主要介紹了
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_Hworkthread.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_Hwidget.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
main.cpp
總結
以上是生活随笔為你收集整理的Qt工作笔记-在ListWidget中多线程检索数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件设计师习题笔记-重点习题三
- 下一篇: Qt模仿游戏拖装备(换装备)