qt与linux进程间通信,简单的QT进程间通信(笔记)

//Fah.h子程序2的头文件

#ifndef FAH_H

#define FAH_H

#include

class QDial;

class QVBoxLayout;

class Fah : public QWidget

{

Q_OBJECT

public:

Fah();

~Fah() {};

private slots:

void handleMsg(const QString &message,

const QByteArray &data);

void sendMsg(int fahNum);//自定义槽

private:

void celToFah(int celNum);

void createScreen();

void createFah();

void listenChannel();

QDial* dial;

QVBoxLayout* fahLayout;

};

#endif //FAH_H

#include

#include

#include

#include

#include

#include

#include

#include

#include "Fah.h"

Fah::Fah() : QWidget()

{

createScreen();

listenChannel();

}

void Fah::createScreen()

{

QPushButton* quitBtn = new QPushButton("Quit");

createFah();

QVBoxLayout *mainLayout = new QVBoxLayout;

mainLayout->addWidget(quitBtn);

mainLayout->addLayout(fahLayout);

setLayout(mainLayout);

dial->setFocus();

connect(quitBtn, SIGNAL(clicked()), qApp, SLOT(quit()));

setWindowTitle("Fahrenheit");

}

void Fah::createFah()

{

QLCDNumber* lcdNum = new QLCDNumber(3);

lcdNum->setSegmentStyle(QLCDNumber::Filled);

lcdNum->display(32);

dial = new QDial;

dial->setRange(32, 212);

dial->setValue(32);

dial->setNotchesVisible(true);

fahLayout = new QVBoxLayout;

fahLayout->addWidget(lcdNum, 0, Qt::AlignBottom |

Qt::AlignHCenter);

fahLayout->addWidget(dial);

fahLayout->setSpacing(10);

connect(dial, SIGNAL(valueChanged(int)), lcdNum, SLOT(display(int)));

connect(dial, SIGNAL(valueChanged(int)), this, SLOT(sendMsg(int)));

}

void Fah::celToFah(int celNum)

{

int fahNum = (celNum * 9 / 5) + 32;

dial->setValue(fahNum);

}

void Fah::listenChannel()

{

QCopChannel *channel = new

QCopChannel("/System/Temperature", this);

connect(channel, SIGNAL(received(const QString &, const QByteArray

&)),

this, SLOT(handleMsg(const

QString &, const QByteArray &)));

}

void Fah::handleMsg(const QString

&message, const QByteArray &data)

{

QDataStream in(data);

if (message == "ConvertCelToFah(int)")

{

int celNum;

in >> celNum;

celToFah(celNum);

}

}

void Fah::sendMsg(int fahNum)

{

QByteArray data;

QDataStream out(&data, QIODevice::WriteOnly);

out << fahNum;

QCopChannel::send("/System/Temperature",

"ConvertFahToCel(int)", data);

}

#include

#include "Fah.h"

int main(int argc, char *argv[])

{

QApplication app(argc, argv);

Fah screen;

screen.setGeometry(130, 25, 100, 250);

screen.show();

return app.exec();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值