Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Qt

Войти
Регистрация
Восстановить пароль
 
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
#1

GUI программа возводящая число в квадрат - C++ Qt

09.01.2017, 00:45. Просмотров 287. Ответов 6
Метки c++, qt (Все метки)

Начал изучать Qt. Пытаюсь реализовать элементарную программу, возводящую число в степень.
Имеется класс, наследуемый от QWidget. В нем QLabel, QLineEdit для ввода числа и еще один для вывода ответа. А также кнопка Pow, возводящая в степень и Exit, завершающая работу виджета.
У меня возникла проблема при соединении сигнала и слота. Честно говоря, никак до конца не пойму как работает этот механизм. Вроде все просто, а ошибки ловлю.
Ловлю ошибку С2664. И проект не хотел запускаться в режиме отладки, запускал в режиме Release. Тоже не знаю, с чем связано.
Ниже код:

PowClass.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
#ifndef POWCLASS_H
#define POWCLASS_H
 
#include <QtWidgets>
 
class PowClass : public QWidget
{
    Q_OBJECT
public:
    PowClass(QWidget* parent = 0);
private:
 
    QLabel* Greetings;
    QLineEdit* InputSpace;
    QLineEdit* Answer;
    QPushButton* Pow;
    QPushButton* Exit;
 
public slots:
    void PowTheNumber();
};
 
#endif // POWCLASS_H
PowClass.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
#include "powclass.h"
 
PowClass::PowClass(QWidget* parent) : QWidget(parent)
{
    Greetings = new QLabel("Greetings! Type a number to pow it:");
    InputSpace = new QLineEdit();
    Answer = new QLineEdit;
    Pow = new QPushButton("Pow");
    Exit = new QPushButton("Exit");
 
    QHBoxLayout* horizontLayout = new QHBoxLayout;
    horizontLayout->addWidget(Pow);
    horizontLayout->addWidget(Exit);
 
    QVBoxLayout* mainLayout = new QVBoxLayout;
    mainLayout->addWidget(Greetings);
    mainLayout->addWidget(InputSpace);
    mainLayout->addWidget(Answer);
    mainLayout->addLayout(horizontLayout);
    mainLayout->setAlignment(Greetings, Qt::AlignCenter);
 
    connect(pow, SIGNAL(clicked()), this, SLOT(PowTheNumber()));
    setLayout(mainLayout);
}
 
void PowClass::PowTheNumber()
{
    QString Inputed = InputSpace->text();
    int digit = Inputed.toInt();
    digit *=digit;
    const QString powedDigit = QString::number(digit);
    Answer->setText(powedDigit);
}
main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "mainwindow.h"
#include "powclass.h"
#include <QApplication>
#include <QtWidgets>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    PowClass A;
    A.show();
 
    return a.exec();
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 00:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос GUI программа возводящая число в квадрат (C++ Qt):

Как запустить qt gui программу, как демон, без gui, скрыв gui? - C++ Qt
Как запустить qt gui программу, как демон, без gui, скрыв gui? В gui браузер выполняет определенные действия, и нужно запустить этот...

Как вывести информацию в консоль, когда программа построена на GUI? - C++ Qt
Вот таким образом консоль не открывается(я про QDebug()&lt;&lt;&quot;aaaa&quot;; ). И еще интересно, куда выведется информация от стандартного макроса...

OpenGL первая программа - черный квадрат вместо разноцветного - C++ Qt
Всем привет. Не могу никак нарисовать этот квадратик. Операционка Windows 10, Qt 5.7. Статическая сборка выдает все хорошо, а через...

Функция, возводящая число в n-ю степень - PascalABC.NET
Написать программу которая возводит числа в n-ю степень , используя функцию

Процедура, возводящая вещественное число в целую степень - Delphi
Здравствуйте, помогите студенту. Описать функцию Power2 (A,N) вещественного типа, находящую величину А^N (A-вещественный,N-целый...

Если квадрат числа меньше 100, напечатать число и его квадрат - C++
Ввести с клавиатуры 10 чисел. Если квадрат числа меньше 100, напечатать число и его квадрат.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Anvis
38 / 16 / 5
Регистрация: 06.06.2013
Сообщений: 75
09.01.2017, 01:14 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++ (Qt)
1
connect(pow, SIGNAL(clicked()), this, SLOT(PowTheNumber()));
pow в коннекте отличается от этого:
C++ (Qt)
1
QPushButton* Pow;
В powclass.h добавь используемые виджеты (а лучше пользуйся компановщиком):
C++ (Qt)
1
2
3
4
5
6
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QHBoxLayout>
#include <QVBoxLayout>
Кстати, в коде не приведен заголовочник, или это здесь не нужно?
C++ (Qt)
1
#include "mainwindow.h"
1
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
09.01.2017, 01:44  [ТС] #3
Спасибо, проблема оказалась именно в этом! Недосмотрел... А
C++ (Qt)
1
#include "mainwindow.h"
действительно к коду не относится. Создался автоматом в QtCreator'e.
Попутный вопрос, хотелось бы задать. А в чем может быть проблема, если при запуске проекта(QtCreator) в Release выходят ошибки LNK2019 и LNK1120. Это, насколько мне известно, ошибки компоновщика, но как их решить - не нашел ответа. Cкрин прилагается
0
Миниатюры
GUI программа возводящая число в квадрат  
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
09.01.2017, 01:52  [ТС] #4
Anvis, забыл обратится по никнейму. А то вдруг не увидите ответа в теме.
0
Anvis
38 / 16 / 5
Регистрация: 06.06.2013
Сообщений: 75
09.01.2017, 03:19 #5
VadimuSSS, про коды ошибок не знаю, у меня любительские знания Какая-то проблема в реализации PowClass? У меня в Креаторе твой проект запустился без проблем, только добавил и убрал то, что написал выше. Попробуй пересобрать проект или приведи ниже неработающий код.
0
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
09.01.2017, 03:22  [ТС] #6
Anvis, Код все тот же. Ладно, в целом и у меня теперь запускается(в Release). Спасибо большое за помощь!
0
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
06.02.2017, 23:52  [ТС] #7
И да, может кому поможет. При ошибке LNK1120 - Сборка->Очистить все и снова Сборка->Запустить qmake
После чего пробуем компилировать, должно заработать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2017, 23:52
Привет! Вот еще темы с ответами:

Если квадрат числа меньше 100, напечатать число и его квадрат - Turbo Pascal
Ввести с клавиатуры 10 чисел. Если квадрат числа меньше 100, напечатать число и его квадрат.

Если квадрат числа меньше 100, напечатать число и его квадрат - Turbo Pascal
Ввести с клавиатуры 10 чисел. Если квадрат числа меньше 100, напечатать число и его квадрат

Написать программу, которая просит пользователя ввести число и выводит квадрат этого числа. Программа завершается тогда, когда пользователь введет 0. - Pascal
Всем привет. Не могу решить эти задания. Можете помочь?Я то я пропустил темы,теперь плохо понимаю. 1. Написать программу, которая...

Вывести целые числа квадрат которых не превышает N, вывести первое число, квадрат которого больше N - Turbo Pascal
Всем привет. Поможет кто решить задачку? :) Дано число N. Вывести целые числа квадрат которых не превышает N, вывести первое число,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.02.2017, 23:52
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru