//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();
}