这是读取
数据方的头
文件:.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QLabel>
#include<QGridLayout>
#include"windows.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void slottimeout();
public:
QLabel *label;
QGridLayout *mainlayout;
private:
HANDLE hMapFlie;
LPVOID intbuf;
int *pt;
};
#endif // MAINWINDOW_H
这是读取数据方的源文件.cpp:
#include "mainwindow.h"
#include<QTimer>
#define BUF_SIZE 1025
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QTimer *timer=new QTimer;
label=new QLabel(this);
mainlayout=new QGridLayout(this);
mainlayout->addWidget(label,1,0);
connect(timer,SIGNAL(timeout()),this,SLOT(slottimeout()));
timer->start(1000);
char szName[] = "NameOfMappingObject"; // 共享内存的名字
hMapFlie=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,BUF_SIZE,(LPCTSTR)szName);
intbuf=MapViewOfFile(hMapFlie,FILE_MAP_ALL_ACCESS,0,0,BUF_SIZE);
pt=(int*)intbuf;
}
MainWindow::~MainWindow()
{
UnmapViewOfFile(intbuf);
CloseHandle(hMapFlie);
}
void MainWindow::slottimeout()
{
label->setText(
QString::number(*pt));
}
写数据方的头文件.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include<QLabel>
#include<QGridLayout>
#include"windows.h"
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void slottimeout();
public:
QLabel *label;
QGridLayout *mainlayout;
private:
int num;
HANDLE hMapFlie;
LPVOID intbuf;
int *pt;
};
#endif // MAINWINDOW_H
写数据方的源文件.cpp:
#include "mainwindow.h"
#include<QTimer>
#define BUF_SIZE 1025
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
QTimer *timer=new QTimer;
label=new QLabel(this);
num=1000;
mainlayout=new QGridLayout(this);
mainlayout->addWidget(label,1,0);
timer->start(1000);
char szName[] = "NameOfMappingObject"; // 共享内存的名字
hMapFlie=CreateFileMapping((HANDLE)0xFFFFFFFF,NULL,PAGE_READWRITE,0,BUF_SIZE,(LPCTSTR)szName);
intbuf=MapViewOfFile(hMapFlie,FILE_MAP_ALL_ACCESS,0,0,BUF_SIZE);
pt=(int*)intbuf;
*pt=num;
connect(timer,SIGNAL(timeout()),this,SLOT(slottimeout()));
}
MainWindow::~MainWindow()
{
UnmapViewOfFile(intbuf);
CloseHandle(hMapFlie);
}
void MainWindow::slottimeout()
{
num++;
*pt=num;
label->setText(QString::number(num));
}
现在有一个
问题是,我用mingw的
编译器去运行这段程序,能得到效果
window.open('http://www.qtcn.org/bbs/attachment/Mon_1705/44_180339_a806f6d5fc91531.png?13');" style="max-width:700px;max-height:700px;" onload="if(is_ie6&&this.offsetWidth>700)this.width=700;" >如果是用MSVC2013版本的QT,就会
出错,我是
安装了VS2013,用QT creator IDE写的,UTF-8带BOM,用VS2013的编译器和windbg调试器,是写数据方数据一直在变化,但读数据方
显示的值却一直为0,不知道为什么,我把makefile也重新配置过了,也不行