Заблокирован
1

Подскажите, как настроить QtCreator так, чтобы сообщения об ошибках выводились в правильной кодировке?

08.08.2016, 19:05. Показов 897. Ответов 7
Метки нет (Все метки)

Помогите разобраться, почему при компиляции этого проекта высыпается куча ошибок, и подскажите, как настроить QtCreator так, чтобы сообщения об ошибках выводились в правильной кодировке. Использую компилятор VS 2015.

calc.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
#ifndef CALC_H
#define CALC_H
 
#include <QWidget>
#include <QStack>
#include <QString>
 
class QLCDNumber;
class QPushButton;
 
class Calculator : public QWidget
{
    Q_OBJECT
private:
    QLCDNumber*         m_plcd;
    QStack<QString>     m_stk;
    QString             m_strDisplay;
 
public:
    Calculator(QWidget *wgt = 0);
    QPushButton* createButton(const QString& str);
    void calculate();
public slots:
    void slotButtonClicked();
};
 
#endif // CALC_H

calc.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include "calc.h"
 
Calculator::Calculator(QWidget *wgt = 0) : QWidget(wgt)
{
    m_plcd = new QLCDNumber(12);
    m_plcd->setSegmentStyle(QLCDNumber::Flat);
    m_plcd->setMinimumSize(150, 50);
 
    QChar aButtons[4][4] = {{'7', '8', '9', '/'},
                            {'4', '5', '6', '*'},
                            {'1', '2', '3', '-'},
                            {'0', '.', '=', '+'}};
 
    QGridLayout *ptopLayout = new QGridLayout;
    ptopLayout->addWidget(m_plcd, 0, 0, 1, 4);
    ptopLayout->addWidget(createButton("CE"), 1, 3);
 
    for (int i = 0; i < 4; ++i)
    {
        for (int j = 0; j < 4; ++j)
        {
            ptopLayout->addWidget(createButton(aButtons[i][j]), i + 2, j);
        }
    }
    setLayout(ptopLayout);
}
 
QPushButton* Calculator::createButton(const QString& str)
{
    QPushButton *pcmd = new QPushButton(str);
    pcmd->setMinimumSize(40, 40);
    connect(pcmd, SIGNAL(clicked), SLOT(slotButtonClicked));
    return pcmd;
}
 
void Calculator::calculate()
{
    double dOperand2 = m_stk.pop().toDouble();
    QString strOperation = m_stk.pop();
    double dOperand1 = m_stk.pop().toDouble();
    double dResult = 0;
 
    if(strOperation == "+")
    {
        dResult = dOperand1 + dOperand2;
    }
    if(strOperation == "-")
    {
        dResult = dOperand1 - dOperand2;
    }
    if(strOperation == "/")
    {
        dResult = dOperand1 / dOperand2;
    }
    if(strOperation == "*")
    {
        dResult = dOperand1 * dOperand2;
    }
 
    m_plcd->display(dResult);
}
 
void Calculator::slotButtonClicked()
{
    QString str = ((QPushButton *)sender())->text();
 
    if (str == "CE")
    {
        m_stk.clear();
        m_strDisplay = "";
        m_plcd->display("0");
        return;
    }
    if (str.contains(QRegExp("[0-9]")))
    {
        m_strDisplay += str;
        m_plcd->display(m_strDisplay.toDouble());
    }
    else if (str == ".")
    {
        m_strDisplay += str;
        m_plcd->display(m_strDisplay);
    }
    else
    {
        if (m_stk.count() >= 2)
        {
            m_stk.push(QString.setNum(m_plcd->value()));
            calculate();
            m_stk.clear();
            m_stk.push(QString.setNum(m_plcd.value()));
            if (str != "=")
            {
                m_stk.push(str);
            }
        }
        else
        {
            m_stk.push(QString().setNum(m_plcd->value()));
            m_strDisplay = "";
            m_plcd->display("0");
        }
    }
}

main.cpp
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <QtGui>
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Calculator calculator;
 
    calculator.setWindowTitle("Calculator");
    calculator.resize(230, 200);
 
    calculator.show();
 
    return app.exec();
}

Проектный файл:

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#-------------------------------------------------
#
# Project created by QtCreator 2016-08-08T18:49:52
#
#-------------------------------------------------
 
QT       += core gui
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = Main
TEMPLATE = app
 
 
SOURCES += main.cpp\
    calc.cpp
 
HEADERS  += \
    calc.h
Одна из недавних ошибок заключалась в том, что линкер не мог резрешить одно имя: это имя конструктора класса. Теперь я получаю кучу неразборчивых ошибок в неправильной кодировке, и они, видимо, сообщают об отсутствующих методах используемых библиотечных классов.

Добавлено через 1 минуту
Дополнительно: скачивал последнюю версию QtCreator с сайта Qt.io
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2016, 19:05
Ответы с готовыми решениями:

Отправка сообщения на почту в правильной кодировке
Здравствуйте отправляю почтовое сообщение с Windows eng и русские буквы приходят кракозяблями....

Как сделать чтобы блокировались сообщения об ошибках в Excel?
Есть такой макрос который бы не показывал (блокировал) сообщения об ошибках типа: #ДЕЛ/0!.

Как сделать так, чтобы на 1 графике выводились и точки и фигура
Здравствуйте! Не могли бы помочь, дело в том, что я написал 2 закона распределения точек и не могу...

Подскажите, как изменить так, чтоб номера строк выводились не с нуля, а от единицы?
Часть кода с заполнением матрицы размерностью 4х6: private static void outSumma(int s) { ...

7
6 / 6 / 1
Регистрация: 02.06.2014
Сообщений: 110
08.08.2016, 19:28 2
Рубрика бредовых идей - в .CPP файле здесь
C++ (Qt)
1
Calculator::Calculator(QWidget *wgt = 0) : QWidget(wgt)
попробуйте просто QWidget *wgt
0
Заблокирован
08.08.2016, 19:34  [ТС] 3
>попробуйте просто QWidget *wgt

Пробовал это первым же делом. Не помогло.
0
1067 / 649 / 229
Регистрация: 14.01.2016
Сообщений: 2,031
Записей в блоге: 9
10.08.2016, 15:13 4
Цитата Сообщение от Invoke Virtual Посмотреть сообщение
Одна из недавних ошибок заключалась в том, что линкер не мог резрешить одно имя: это имя конструктора класса. Теперь я получаю кучу неразборчивых ошибок в неправильной кодировке, и они, видимо, сообщают об отсутствующих методах используемых библиотечных классов.
http://blog.harrix.org/article/5888
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
10.08.2016, 18:10 5
Цитата Сообщение от Invoke Virtual Посмотреть сообщение
как настроить QtCreator так
Английскую версию VS попробуй.
0
Заблокирован
12.08.2016, 15:31  [ТС] 6
Английскую версию VS попробуй.
Боюсь ее переустанавливать, потому что однажды у меня уже было так, что после удаления она снова не установилась. Нельзя ли просто язык изменить каким-нибудь патчем?
0
0 / 0 / 1
Регистрация: 17.06.2016
Сообщений: 25
13.08.2016, 13:12 7
Инструменты -> настройки -> среда -> язык(часть ошибок начала выводиться нормально, но не все)! Помогает удаление build(имя проекта) и ошибки пропадают после Ctrl+R!!!! И это ж пример из Шлее Qt 5.3, http://www.bhv.ru/books/book.php?id=193181 "файлы для загрузки" там все исходники примеров с книги, там есть этот калькулятор(6 глава)!
0
Заблокирован
13.08.2016, 17:48  [ТС] 8
Сменил язык QtCreator, поставил языковой пакет для vs2015, на английском стало намного приятнее работать, но ошибки в неправильной кодировке никуда не делись - компилятор остался нерусифицированным. Билд удалял.

Добавлено через 17 минут
Взял jom.exe отсюда, скопировал в папки bin для разных версий qt, где лежит qmake, поставил галочку в настройках, но это не помогло.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2016, 17:48

Как сделать так чтобы при нажатии клавиш выводились цифры на рисунке?
Здравствуйте, дорогие читатели! У нас в этой четверти идет проект по информатике и нам нужно...

Как сделать так чтобы считывался пробел и не выводились несколько раз повторенные символы
Как сделать так чтобы считывался пробел и не выводились несколько раз повторенные символы Вот код...

Как сделать так, чтобы в список Combobox выводились только рабочие ком порты
Собственно интересует такой вопрос, как сделать так, чтобы в список Combobox выводились только...

Подскажите как сделать чтобы эти дроби не выводились, а записались в массив str1[100]
Подскажите как сделать чтобы эти дроби не выводились, а записались в массив str1 char str1; for...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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