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

Qt

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

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

09.01.2017, 00:45. Просмотров 259. Ответов 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();
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.01.2017, 00:45     GUI программа возводящая число в квадрат
Посмотрите здесь:

Графика в QT (GUI) C++ Qt
Как вывести информацию в консоль, когда программа построена на GUI? C++ Qt
C++ Qt GUI из картинок
C++ Qt GUI и DLL
C++ Qt GUI меню в qt
C++ Qt Лог в GUI
Обучение GUI Qt C++ Qt
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Anvis
38 / 16 / 5
Регистрация: 06.06.2013
Сообщений: 71
09.01.2017, 01:14     GUI программа возводящая число в квадрат #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"
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
09.01.2017, 01:44  [ТС]     GUI программа возводящая число в квадрат #3
Спасибо, проблема оказалась именно в этом! Недосмотрел... А
C++ (Qt)
1
#include "mainwindow.h"
действительно к коду не относится. Создался автоматом в QtCreator'e.
Попутный вопрос, хотелось бы задать. А в чем может быть проблема, если при запуске проекта(QtCreator) в Release выходят ошибки LNK2019 и LNK1120. Это, насколько мне известно, ошибки компоновщика, но как их решить - не нашел ответа. Cкрин прилагается
Миниатюры
GUI программа возводящая число в квадрат  
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
09.01.2017, 01:52  [ТС]     GUI программа возводящая число в квадрат #4
Anvis, забыл обратится по никнейму. А то вдруг не увидите ответа в теме.
Anvis
38 / 16 / 5
Регистрация: 06.06.2013
Сообщений: 71
09.01.2017, 03:19     GUI программа возводящая число в квадрат #5
VadimuSSS, про коды ошибок не знаю, у меня любительские знания Какая-то проблема в реализации PowClass? У меня в Креаторе твой проект запустился без проблем, только добавил и убрал то, что написал выше. Попробуй пересобрать проект или приведи ниже неработающий код.
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
09.01.2017, 03:22  [ТС]     GUI программа возводящая число в квадрат #6
Anvis, Код все тот же. Ладно, в целом и у меня теперь запускается(в Release). Спасибо большое за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2017, 23:52     GUI программа возводящая число в квадрат
Еще ссылки по теме:

QtSQL в GUI C++ Qt
C++ Qt Потоки и GUI
C++ Qt Qt 4.5 с GUI
Общение с QT gui из dl C++ Qt
C++ Qt OpenGL первая программа - черный квадрат вместо разноцветного

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

Или воспользуйтесь поиском по форуму:
VadimuSSS
2 / 2 / 0
Регистрация: 23.06.2014
Сообщений: 163
06.02.2017, 23:52  [ТС]     GUI программа возводящая число в квадрат #7
И да, может кому поможет. При ошибке LNK1120 - Сборка->Очистить все и снова Сборка->Запустить qmake
После чего пробуем компилировать, должно заработать.
Yandex
Объявления
06.02.2017, 23:52     GUI программа возводящая число в квадрат
Ответ Создать тему
Опции темы

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