本人初学Qt,希望高人指点一二
 
————MainWindow.h————————
 
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QtNetwork/QUdpSocket>
#include <QtNetwork/QHostAddress>
#include "../driver_c/fpga_me_ioc.h"
#include <QThread>
namespace Ui {
    class MainWindow;
    class MyThread;
}
class MyThread:public QThread
{
    Q_OBJECT;
public:
    MyThread(QObject *parent =0);
    int fd;
    int ret,arg;
signals:
    void ready_data();
protected:
    void run();
};
class MainWindow : public QMainWindow,public MyThread
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    short temp;
    char gain;
    int buf[256];
    MyThread *b;
public slots:
    void paintEvent(QPaintEvent *);
private:
    Ui::MainWindow *ui;
protected:
private slots:
    void on_action_3_triggered();
};
 
#endif // MAINWINDOW_H
 
 
————MainWindow.cpp————————————————
 
 
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtGui>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <QtDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    b->start();    ui->setupUi(this);
}MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::paintEvent(QPaintEvent *)
{
}
MyThread::MyThread(QObject *)
{              
         fd = ::open("/dev/fpga_mea",O_RDWR);
    if(fd<0)
    {
        qDebug()<<"open fpga failed!: \r\n"<<fd;
    }
    else
    {
        while(1)
        {
            ret = ::ioctl(fd, DEV_IOC_WAIT_TASK, &arg);
            if(ret == -108)
            {
                qDebug()<<"ioctl error!: \r\n"<<ret;
            }
            else
            {
                emit ready_data();            
            }        
         }
    }
}
void MyThread::run()
{
    extern MainWindow w;                         //这句是我瞎想的
    connect(this, SIGNAL( ready_data()), &w,SLOT(paintEvent()), Qt::QueuedConnection);   //编译一直是这一句过不去,提示w有问题,但不知道怎样才能和主窗口的槽函数连接上。
    exec();
}
void MainWindow::on_action_3_triggered()
{
}
 ————main.cpp————————————————————————————————
 
#include <QtGui/QApplication>
#include "mainwindow.h"
#include <QThread>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();    return a.exec();
}