刚学 QT,求帮忙补充代码,实在是不行了,时间也不够了,求帮帮忙。
实现一个温度转换器,就是转动任意一个表盘,另一个表盘和显示的数字都会发生相应的变化
添加了头文件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
"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()
{
}
解决了吗,没解决可以找我哈