使用QT设计一个温度转换器

刚学 QT,求帮忙补充代码,实在是不行了,时间也不够了,求帮帮忙。

实现一个温度转换器,就是转动任意一个表盘,另一个表盘和显示的数字都会发生相应的变化

img

添加了头文件tempconverter.h

#ifndef TEMPCONVERTER_H
#define TEMPCONVERTER_H

#include 

class TempConverter : public QObject
{
    Q_OBJECT

public:
    TempConverter(int tempCelsius, QObject *parent = 0);
    int tempCelsius() const;//读取摄氏温度
    int tempFahrenheit() const;//读取华氏温度

public slots:
    void setTempCelsius(int);
    void setTempFahrenheit(int);

signals:
    void tempCelsiusChanged(int);
    void tempFahrenheitChanged(int);

private:
    int m_tempCelsius;
};

#endif // TEMPCONVERTER_H

widget.h头文件

#ifndef WIDGET_H
#define WIDGET_H

#include 

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp源文件

#include "tempconverter.h"

TempConverter::TempConverter()
{

}

//设置摄氏温度并且发出信号
void TempConverter::setTempCelsius(int tempCelsius)
{
    if(m_tempCelsius == tempCelsius)
        return;

    m_tempCelsius = tempCelsius;

    emit tempCelsiusChanged(m_tempCelsius);//摄氏温度改变
    emit tempFahrenheitChanged(tempFahrenheit());//华氏温度改变,并且通过读取表盘获取对应的华氏温度
}

void TempConverter::setTempFahrenheit(int tempFahrenheit)
{
    int tempCelsius = (5.0/9.0)*(tempFahrenheit-32);
    setTempCelsius(tempCelsius);
}


widget.cpp源文件

#include "widget.h"
#include "ui_widget.h"
#include "tempconverter.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
    //设置取值范围
    ui->dial->setMinimum(0);
    ui->dial->setMaximum(255);

    //表盘的值改变,重新设置摄氏温度
    connect(ui->celsiusDial, SIGNAL(valueChanged(int)), tempConverter, SLOT(setTempCelsius(int)));
    //
    connect(celsiusDial, SIGNAL(valueChanged(int)), celsiusLcd, SLOT(display(int)));
    //改变摄氏温度表盘的值
    connect(tempConverter, SIGNAL(tempCelsiusChanged(int)), celsiusDial, SLOT(setValue(int)));
    
    connect(fahrenheitDial, SIGNAL(valueChanged(int)), tempConverter, SLOT(setTempFahrenheit(int)));
    connect(fahrenheitDial, SIGNAL(valueChanged(int)), fahrenheitLcd, SLOT(display(int)));
    connect(tempConverter, SIGNAL(tempFahrenheitChanged(int)), fahrenheitDial, SLOT(setValue(int)));
}

Widget::~Widget()
{
    delete ui;
}

//读取表盘的值
int TempConverter::tempCelsius() const
{
    //获取表盘的值
    return ui->celsiusDial->value();
}

int TempConverter::tempFahrenheit() const
{
    //获取表盘的值
    return ui->fahrenheitDial->value();
}

设计的ui

img

"1.0" encoding="UTF-8"?>
"4.0">
 <class>Widgetclass>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0x>
    <y>0y>
    <width>318width>
    <height>211height>
   rect>
  property>
  <property name="windowTitle">
   <string>Widgetstring>
  property>
  <widget class="QGroupBox" name="groupBox">
   <property name="geometry">
    <rect>
     <x>20x>
     <y>40y>
     <width>131width>
     <height>161height>
    rect>
   property>
   <property name="title">
    <string>Celsiusstring>
   property>
   <widget class="QLCDNumber" name="lcdNumber">
    <property name="geometry">
     <rect>
      <x>30x>
      <y>120y>
      <width>64width>
      <height>23height>
     rect>
    property>
   widget>
   <widget class="QDial" name="dial">
    <property name="geometry">
     <rect>
      <x>20x>
      <y>30y>
      <width>81width>
      <height>91height>
     rect>
    property>
   widget>
  widget>
  <widget class="QGroupBox" name="groupBox_2">
   <property name="geometry">
    <rect>
     <x>160x>
     <y>40y>
     <width>141width>
     <height>161height>
    rect>
   property>
   <property name="title">
    <string>Fahrenheitstring>
   property>
   <widget class="QLCDNumber" name="lcdNumber_2">
    <property name="geometry">
     <rect>
      <x>40x>
      <y>120y>
      <width>64width>
      <height>23height>
     rect>
    property>
   widget>
   <widget class="QDial" name="fahrenheitDial">
    <property name="geometry">
     <rect>
      <x>30x>
      <y>30y>
      <width>81width>
      <height>91height>
     rect>
    property>
   widget>
  widget>
 widget>
 <resources/>
 <connections/>
ui>

#include "dialog.h"
#include
#include
#include
#include
#include
#include
 
 
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
QPushButton *m_QuitButton =new QPushButton("Quit",this);
QLabel *m_Cenlabel=new QLabel("Centigrade",this);
QLabel *m_Fahlabel = new QLabel("Fahrenheit",this);
m_Fahlabel->setAlignment(Qt::AlignHCenter);
QLabel *m_Label = new QLabel("0",this);
QSlider *m_Slider = new QSlider(this);
QLCDNumber *m_LCDNumber = new QLCDNumber(this);
QDial *m_dial = new QDial(this);
QGridLayout *layout = new QGridLayout(this);
layout->setSpacing(10);
layout->setMargin(20);
layout->addWidget(m_QuitButton,0,0,1,3);
layout->addWidget(m_Cenlabel,1,0,1,2);
layout->addWidget(m_Fahlabel,1,2);
layout->addWidget(m_Label,2,0,2,1);
layout->addWidget(m_Slider,2,1,2,1);
layout->addWidget(m_LCDNumber,2,2);
layout->addWidget(m_dial,3,2);
this->setLayout(layout);
 
 
 
 
}
 
Dialog::~Dialog()
{
 
}  

解决了吗,没解决可以找我哈