Hi.
I am doing my homework about Temperature Converter.
kWANobd7DcKYUQx.jpg
The problem is the "Celsius" and "Fahrenheit" can't be synchronous.
Qt Code:
  1. #include "dialog.h"
  2. #include <QBoxLayout>
  3.  
  4. Dialog::Dialog(int tempCelsius, QWidget *parent)
  5. : QDialog(parent)
  6. {
  7. celsiusGroupBox = new QGroupBox(this);
  8. fahrenheitGroupBox = new QGroupBox(this);
  9. celsiusDia = new QDial(celsiusGroupBox);
  10. fahrenheitDia = new QDial(fahrenheitGroupBox);
  11. celsiusLDNumber = new QLCDNumber(celsiusGroupBox);
  12. fahrenheitLDNumber = new QLCDNumber(fahrenheitGroupBox);
  13. celsiusGroupBox->setTitle("Celsius");
  14. fahrenheitGroupBox->setTitle("Fahrenheit");
  15. leftLayout->addWidget(celsiusDia);
  16. leftLayout->addWidget(celsiusLDNumber);
  17. rightLayout->addWidget(fahrenheitDia);
  18. rightLayout->addWidget(fahrenheitLDNumber);
  19. connect(celsiusDia, SIGNAL(valueChanged(int)), this, SLOT(setTempCelsius()));
  20. connect(celsiusDia, SIGNAL(valueChanged(int)), celsiusLDNumber, SLOT(display(int)));
  21. connect(this, SIGNAL(tempCelsiusChanged(int)), celsiusDia, SLOT(setValue(int)));
  22. connect(fahrenheitDia, SIGNAL(valueChanged(int)), this, SLOT(setTempFahrenheit()));
  23. connect(fahrenheitDia, SIGNAL(valueChanged(int)), fahrenheitLDNumber, SLOT(display(int)));
  24. connect(this, SIGNAL(tempFahrenheitChanged(int)), fahrenheitDia, SLOT(setValue(int)));
  25. m_tempCelsius = 0;
  26. setTempCelsius(tempCelsius);
  27. }
  28.  
  29. int Dialog::tempCelsius() const
  30. {
  31. return m_tempCelsius;
  32. }
  33.  
  34. int Dialog::tempFahrenheit() const
  35. {
  36. return m_tempCelsius*(9.0/5.0)+32;
  37. }
  38.  
  39. void Dialog::setTempCelsius(int tempCelsius)
  40. {
  41. if (m_tempCelsius==tempCelsius)
  42. return;
  43.  
  44. m_tempCelsius = tempCelsius;
  45. emit tempCelsiusChanged(m_tempCelsius);
  46. emit tempFahrenheitChanged(tempFahrenheit());
  47. }
  48.  
  49. void Dialog::setTempFahrenheit(int tempFahrenheit)
  50. {
  51. int tempCelsius = (tempFahrenheit - 32) * (5.0/9.0);
  52. setTempCelsius(tempCelsius);
  53. }
To copy to clipboard, switch view to plain text mode