Calc++.h
Qt Code:
  1. #ifndef CALC++_H
  2. #define CALC++_H
  3.  
  4. #include <QDialog>
  5. #include "ui_Calc++.h"
  6. class calc:public QDialog ,public Ui::Calc{
  7. Q_OBJECT
  8. private slots:
  9. void edig(const char &num);
  10. void set_op_op1(const char &op);
  11. void compute_result();
  12. public:
  13. calc(QWidget *parent=0);
  14. private:
  15. double op1,op2;
  16. char ope;};
  17. #endif
To copy to clipboard, switch view to plain text mode 

Calc++.cpp
Qt Code:
  1. #include <QtGui>
  2. #include "Calc++.h"
  3. calc::calc(QWidget *parent):QDialog(parent){
  4. lineEdit->setValidator(new QRegexpValidator(QDoubleValidator,this));
  5. QObject::connect(cls,SIGNAL(clicked()),lineEdit,SLOT(clear()));
  6. QObject::connect(_1,SIGNAL(clicked()),lineEdit,SLOT(edig(_1->text())));
  7. QObject::connect(_2,SIGNAL(clicked()),lineEdit,SLOT(edig(_2->text())));
  8. QObject::connect(_3,SIGNAL(clicked()),lineEdit,SLOT(edig(_3->text())));
  9. QObject::connect(_4,SIGNAL(clicked()),lineEdit,SLOT(edig(_4->text())));
  10. QObject::connect(_5,SIGNAL(clicked()),lineEdit,SLOT(edig(_5->text())));
  11. QObject::connect(_6,SIGNAL(clicked()),lineEdit,SLOT(edig(_6->text())));
  12. QObject::connect(_7,SIGNAL(clicked()),lineEdit,SLOT(edig(_7->text())));
  13. QObject::connect(_8,SIGNAL(clicked()),lineEdit,SLOT(edig(_8->text())));
  14. QObject::connect(_9,SIGNAL(clicked()),lineEdit,SLOT(edig(_9->text())));
  15. QObject::connect(_10,SIGNAL(clicked()),lineEdit,SLOT(edig(_10->text())));
  16. QObject::connect(point,SIGNAL(clicked()),lineEdit,SLOT(edig(point->text())));
  17. QObject::connect(unmin,SIGNAL(clicked()),lineEdit,SLOT(edig('u')));
  18. QObject::connect(plus,SIGNAL(clicked()),lineEdit,SLOT(set_op_op1('+')));
  19. QObject::connect(minus,SIGNAL(clicked()),lineEdit,SLOT(set_op_op1('-')));
  20. QObject::connect(multiply,SIGNAL(clicked()),lineEdit,SLOT(set_op_op1('*')));
  21. QObject::connect(division,SIGNAL(clicked()),lineEdit,SLOT(set_op_op1('/')));
  22. QObject::connect(equal,SIGNAL(clicked()),lineEdit,SLOT(compute_result()));}
  23. void calc::edig(const char &num){
  24. if(num=='u') lineEdit->setText(QString((char)((lineEdit->text().toDouble())*(-1))));
  25. else lineEdit->setText(lineEdit->text()+num);}
  26. void calc::set_op_op1(const char &op){
  27. op1=(lineEdit->text()).toDouble();
  28. ope=op;
  29. lineEdit->clear();}
  30. void calc::compute_result(){
  31. op2=(lineEdit->text()).toDouble();
  32. switch(ope){
  33. case '+':
  34. lineEdit->setText(QString((char)(op1+op2)));
  35. break;
  36. case '-':
  37. lineEdit->setText(QString((char)(op1-op2)));
  38. break;
  39. case '*':
  40. lineEdit->setText(QString((char)(op1*op2)));
  41. break;
  42. case '/':
  43. lineEdit->setText(QString((char)(op1/op2)));
  44. break;}}
To copy to clipboard, switch view to plain text mode 

ui_Calc++.h
Qt Code:
  1. /********************************************************************************
  2. ** Form generated from reading ui file 'Calc++.ui'
  3. **
  4. ** Created: Wed Mar 4 15:07:20 2009
  5. ** by: Qt User Interface Compiler version 4.5.0
  6. **
  7. ** WARNING! All changes made in this file will be lost when recompiling ui file!
  8. ********************************************************************************/
  9.  
  10. #ifndef UI_CALC_2B__2B__H
  11. #define UI_CALC_2B__2B__H
  12.  
  13. #include <QtCore/QVariant>
  14. #include <QtGui/QAction>
  15. #include <QtGui/QApplication>
  16. #include <QtGui/QButtonGroup>
  17. #include <QtGui/QDialog>
  18. #include <QtGui/QHeaderView>
  19. #include <QtGui/QLineEdit>
  20. #include <QtGui/QPushButton>
  21.  
  22. QT_BEGIN_NAMESPACE
  23.  
  24. class Ui_Calc
  25. {
  26. public:
  27. QPushButton *point;
  28. QPushButton *plus;
  29. QPushButton *division;
  30. QPushButton *unmin;
  31. QLineEdit *lineEdit;
  32. QPushButton *equal;
  33. QPushButton *minus;
  34. QPushButton *multiply;
  35.  
  36. void setupUi(QDialog *Calc)
  37. {
  38. if (Calc->objectName().isEmpty())
  39. Calc->setObjectName(QString::fromUtf8("Calc"));
  40. Calc->resize(245, 163);
  41. point = new QPushButton(Calc);
  42. point->setObjectName(QString::fromUtf8("point"));
  43. point->setGeometry(QRect(100, 130, 31, 23));
  44. cls = new QPushButton(Calc);
  45. cls->setObjectName(QString::fromUtf8("cls"));
  46. cls->setGeometry(QRect(200, 40, 31, 41));
  47. _3 = new QPushButton(Calc);
  48. _3->setObjectName(QString::fromUtf8("_3"));
  49. _3->setGeometry(QRect(100, 40, 31, 23));
  50. plus = new QPushButton(Calc);
  51. plus->setObjectName(QString::fromUtf8("plus"));
  52. plus->setGeometry(QRect(150, 40, 31, 23));
  53. _7 = new QPushButton(Calc);
  54. _7->setObjectName(QString::fromUtf8("_7"));
  55. _7->setGeometry(QRect(20, 100, 31, 23));
  56. division = new QPushButton(Calc);
  57. division->setObjectName(QString::fromUtf8("division"));
  58. division->setGeometry(QRect(150, 130, 31, 21));
  59. _6 = new QPushButton(Calc);
  60. _6->setObjectName(QString::fromUtf8("_6"));
  61. _6->setGeometry(QRect(100, 70, 31, 23));
  62. _5 = new QPushButton(Calc);
  63. _5->setObjectName(QString::fromUtf8("_5"));
  64. _5->setGeometry(QRect(60, 70, 31, 23));
  65. _1 = new QPushButton(Calc);
  66. _1->setObjectName(QString::fromUtf8("_1"));
  67. _1->setGeometry(QRect(20, 40, 31, 23));
  68. unmin = new QPushButton(Calc);
  69. unmin->setObjectName(QString::fromUtf8("unmin"));
  70. unmin->setGeometry(QRect(20, 130, 31, 23));
  71. _4 = new QPushButton(Calc);
  72. _4->setObjectName(QString::fromUtf8("_4"));
  73. _4->setGeometry(QRect(20, 70, 31, 23));
  74. _8 = new QPushButton(Calc);
  75. _8->setObjectName(QString::fromUtf8("_8"));
  76. _8->setGeometry(QRect(60, 100, 31, 23));
  77. _9 = new QPushButton(Calc);
  78. _9->setObjectName(QString::fromUtf8("_9"));
  79. _9->setGeometry(QRect(100, 100, 31, 23));
  80. _2 = new QPushButton(Calc);
  81. _2->setObjectName(QString::fromUtf8("_2"));
  82. _2->setGeometry(QRect(60, 40, 31, 23));
  83. _10 = new QPushButton(Calc);
  84. _10->setObjectName(QString::fromUtf8("_10"));
  85. _10->setGeometry(QRect(60, 130, 31, 23));
  86. lineEdit = new QLineEdit(Calc);
  87. lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
  88. lineEdit->setGeometry(QRect(10, 10, 231, 21));
  89. equal = new QPushButton(Calc);
  90. equal->setObjectName(QString::fromUtf8("equal"));
  91. equal->setGeometry(QRect(200, 90, 31, 61));
  92. minus = new QPushButton(Calc);
  93. minus->setObjectName(QString::fromUtf8("minus"));
  94. minus->setGeometry(QRect(150, 70, 31, 23));
  95. multiply = new QPushButton(Calc);
  96. multiply->setObjectName(QString::fromUtf8("multiply"));
  97. multiply->setGeometry(QRect(150, 100, 31, 23));
  98.  
  99. retranslateUi(Calc);
  100.  
  101. QMetaObject::connectSlotsByName(Calc);
  102. } // setupUi
  103.  
  104. void retranslateUi(QDialog *Calc)
  105. {
  106. Calc->setWindowTitle(QApplication::translate("Calc", "Dialog", 0, QApplication::UnicodeUTF8));
  107. point->setText(QApplication::translate("Calc", ".", 0, QApplication::UnicodeUTF8));
  108. cls->setText(QApplication::translate("Calc", "&CLS", 0, QApplication::UnicodeUTF8));
  109. _3->setText(QApplication::translate("Calc", "3", 0, QApplication::UnicodeUTF8));
  110. plus->setText(QApplication::translate("Calc", "+", 0, QApplication::UnicodeUTF8));
  111. _7->setText(QApplication::translate("Calc", "7", 0, QApplication::UnicodeUTF8));
  112. division->setText(QApplication::translate("Calc", "/", 0, QApplication::UnicodeUTF8));
  113. _6->setText(QApplication::translate("Calc", "6", 0, QApplication::UnicodeUTF8));
  114. _5->setText(QApplication::translate("Calc", "5", 0, QApplication::UnicodeUTF8));
  115. _1->setText(QApplication::translate("Calc", "1", 0, QApplication::UnicodeUTF8));
  116. unmin->setText(QApplication::translate("Calc", "+/-", 0, QApplication::UnicodeUTF8));
  117. _4->setText(QApplication::translate("Calc", "4", 0, QApplication::UnicodeUTF8));
  118. _8->setText(QApplication::translate("Calc", "8", 0, QApplication::UnicodeUTF8));
  119. _9->setText(QApplication::translate("Calc", "9", 0, QApplication::UnicodeUTF8));
  120. _2->setText(QApplication::translate("Calc", "2", 0, QApplication::UnicodeUTF8));
  121. _10->setText(QApplication::translate("Calc", "0", 0, QApplication::UnicodeUTF8));
  122. lineEdit->setText(QString());
  123. equal->setText(QApplication::translate("Calc", "=", 0, QApplication::UnicodeUTF8));
  124. minus->setText(QApplication::translate("Calc", "-", 0, QApplication::UnicodeUTF8));
  125. multiply->setText(QApplication::translate("Calc", "*", 0, QApplication::UnicodeUTF8));
  126. Q_UNUSED(Calc);
  127. } // retranslateUi
  128.  
  129. };
  130.  
  131. namespace Ui {
  132. class Calc: public Ui_Calc {};
  133. } // namespace Ui
  134.  
  135. QT_END_NAMESPACE
  136.  
  137. #endif // UI_CALC_2B__2B__H
To copy to clipboard, switch view to plain text mode 

Hi
With due attention to codes above,I have 2 questions.
1-When I wanna run it,I get the Don't send message.What is the problem?
2-Whit due attention to line 4 of Calc++.cpp,Is it the right syntax for setting a validator for a lineEdit to QDoubleValidator?If not,tell the right one.thanks