Написал прогу (простенький калькулятор), благодаря той теме, которую запостил тут:
Считать данные
Написал, но кое-какие моменты остались непонятными.
Привожу проект целиком:
.h
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| #ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui{ // создали пространство имен для нашего класса
class MainWindow;
}
class MainWindow : public QMainWindow // открытое наследование от QMainWindow
{
Q_OBJECT // макрос, который никогда не надо трогать
public:
explicit MainWindow(QWidget *parent = 0); // тоже не трогать
~MainWindow(); // деструктор
private slots:
void on_Close_clicked();
void on_plus_clicked();
void on_minus_clicked();
void on_multiply_clicked();
void on_devide_clicked();
void Clear_Box();
private:
Ui::MainWindow *ui; //указатель на объект созданного нами класса
//Сами объекты размещаются в динамической памяти при помощи операции new
//и имени не имеют! Доступ к ним может осуществляться через указатель с использованием оператора –>
};
#endif // MAINWINDOW_H |
|
.cpp
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
| #include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent): //
QMainWindow(parent),
ui(new Ui::MainWindow)
{
//setupUi содержит в себе графическую информацию для создания объекта класса, который мы создали
ui->setupUi(this); //ui-> так как ui - указатель на объект нашего класса
//this в качестве аргумента для того, чтобы функция setupUi знала для какого объекта она вызывается
}
MainWindow::~MainWindow()
{
delete ui; //удаляется указатель на наш объект
}
void MainWindow::on_Close_clicked()
{
}
// ? - каким образом компилятор понимает, что эта функция привязана к кнопке plus на форме
void MainWindow:: on_plus_clicked()
{
//создаем объект класса QString - строку и присваиваем ей введенное в поле LineEdit значение
// с помощью функции text()
// в строку str1 записывается содержимое виджета с помощью метода text()
QString str1 = ui->lineEdit1->text();
QString str2 = ui->lineEdit2->text();
// QString s= o.lineEdit1->text();
//переменной number1 присваиваем значение переменной str1 преобразованной в число
int number1 = str1.toInt();
int number2 = str2.toInt();
int summa=number1+number2;
// в окошко lineEdit_3 выводим результат (переменную summa)
ui->lineEdit_3->setText(QString::number(summa));
}
void MainWindow::on_minus_clicked(){
QString str1 = ui->lineEdit1->text();
QString str2 = ui->lineEdit2->text();
int number1 = str1.toInt();
int number2 = str2.toInt();
int summa=number1-number2;
ui->lineEdit_3->setText(QString::number(summa));
}
void MainWindow::on_multiply_clicked(){
QString str1 = ui->lineEdit1->text();
QString str2 = ui->lineEdit2->text();
int number1 = str1.toInt();
int number2 = str2.toInt();
int summa=number1*number2;
ui->lineEdit_3->setText(QString::number(summa));
}
void MainWindow::on_devide_clicked(){
QString str1 = ui->lineEdit1->text();
QString str2 = ui->lineEdit2->text();
float number1 = str1.toDouble();
float number2 = str2.toDouble();
float summa=number1/number2;
ui->lineEdit_3->setText(QString::number(summa));
}
void MainWindow::Clear_Box()
{
} |
|
Просьба прочитать мои комментарии и поправить, если я что-то не так понимаю, а также ответить на вопрос
C++ (Qt) |
1
2
| // ? - каким образом компилятор понимает, что эта функция привязана к кнопке plus на форме
void MainWindow:: on_plus_clicked() |
|
Не может ведь быть, чтобы в названии функции происходила привязка...?