Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
-4 / 1 / 0
Регистрация: 24.10.2018
Сообщений: 23

"Файл символов не загружен" когда создаю новое окно

06.02.2020, 23:59. Показов 1339. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал класс для нового окна и сделал что бы при нажатии на кнопку, оно открывалось. Сначала всё было хорошо, всё запускалось. Но когда я написал код в том классе, у меня начинает писать "Файл символов не загружен" и больше ничего. При этом прога работает, только когда создаю окно тогда так. Уже второй день пытаюсь что-то сделать, весь код перелазил, ничего не помогает. Может я упустил где-то свою ошибку, но я не знаю даже примерно где она может быть, мне компилятор ничего не сказал.
Visual Studio 2017
Qt 5.13.0

Код.
Кликните здесь для просмотра всего текста
Не обращайте внимания на кривой код.
plans_w.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
35
36
37
38
39
40
41
42
43
44
45
46
#pragma once
 
#include <QWidget>
#include "ui_plans_w.h"
 
#include <qcheckbox>
#include <qstringlist>
#include <qinputdialog>
#include <qmessagebox>
#include <qtimer>
#include <qstring>
#include <vector>
#include <qfile>
#include <qdir>
#include <qlabel>
#include <qcollator>
 
class plans_w : public QWidget
{
    Q_OBJECT
 
public:
    plans_w(QWidget *parent = Q_NULLPTR);
    ~plans_w();
 
    void getData(int *wasted, int *total) { this->wasted = *wasted; this->total = *total; };
 
private:
    Ui::plans_w ui;
 
    QTimer *timer1 = new QTimer;
 
    int totalPlans = 0, endedPlans = 0;
    int wasted, total;
 
    void addPlan(QString comments = "");
    void reloadPlans();
    void clearLayout(QGridLayout *layout);
    void savePlans();
 
private slots:
    void timer1_tick();
    void reloadPlans_click();
    void addPlan_click();
    void editPlan_click();
};
plans_w.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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#include "plans_w.h"
 
plans_w::plans_w(QWidget *parent)
    : QWidget(parent)
{
    ui.setupUi(this);
 
    ui.widgetPlans->setLayout(ui.layoutPlans);
    ui.frameTools->setLayout(ui.layoutTools);
 
    timer1->setInterval(10);
    timer1->start();
 
    reloadPlans();
 
    connect(timer1, SIGNAL(timeout()), this, SLOT(timer1_tick()));
    connect(ui.addButton, SIGNAL(clicked()), this, SLOT(addPlan_click()));
    connect(ui.reloadButton, SIGNAL(clicked()), this, SLOT(reloadPlans_click()));
}
 
plans_w::~plans_w(){
    savePlans();
}
 
void plans_w::timer1_tick() {
 
    ui.scrollBar->setGeometry(
        ui.framePlans->width() - ui.scrollBar->width(),
        0,
        ui.scrollBar->width(),
        ui.framePlans->height()
    );
 
    ui.widgetPlans->setGeometry(
        0,
        -(ui.scrollBar->value()),
        ui.framePlans->width() - ui.scrollBar->width(),
        ui.layoutPlans->rowCount() * 20
    );
 
    if (ui.widgetPlans->height() - ui.framePlans->height() > 0) {
        ui.scrollBar->setEnabled(true);
        ui.scrollBar->setMaximum(ui.widgetPlans->height() - ui.framePlans->height());
    }
    else {
        ui.scrollBar->setEnabled(false);
        ui.scrollBar->setValue(0);
    }
}
 
void plans_w::addPlan(QString comments) {
 
    QDir file1;
    file1.cd("plans");
    QFileInfoList files = file1.entryInfoList();
 
    QString fileName = "plan" + QString::number(files.size());
 
    QFile file("plans/" + fileName + ".txt");
    if (file.open(QIODevice::OpenModeFlag::WriteOnly)) {
        file.write(("0#" + comments).toStdString().c_str());
    }
    else {
        QMessageBox::information(this, "Error 1.0",
            "Упс! Здається якийсь файл не відкрився. [void plans_w::addPlan(QString comments)]",
            QMessageBox::StandardButton::Ok);
        // 1 - error of file    0 - not opened file
    }
}
 
void plans_w::reloadPlans() {
    savePlans();
    clearLayout(ui.layoutPlans);
 
    totalPlans = endedPlans = 0;
 
    QDir file;
    file.cd("plans");
    QFileInfoList files = file.entryInfoList();
 
    for (int i = 0; i < files.count(); i++) {
        QFile fileToOpen(files.at(i).filePath());
        if (fileToOpen.open(QIODevice::OpenModeFlag::ReadOnly)) {
 
            QString allStr = fileToOpen.read(9999);
            int mode = allStr.left(allStr.indexOf('#')).toInt();
 
            totalPlans++;
            endedPlans += mode;
 
            QCheckBox *dataOfPlan = new QCheckBox;
            dataOfPlan->setChecked(mode);
            dataOfPlan->setText(files.at(i).fileName().remove(".txt") + "\t|\t" + allStr.right(allStr.size() - allStr.indexOf('#') - 1));
 
            QPushButton *editButton = new QPushButton;
            editButton->setText("редагувати");
            editButton->setMaximumWidth(75);
            connect(editButton, SIGNAL(clicked()), this, SLOT(editPlan_click()));
 
            ui.layoutPlans->addWidget(dataOfPlan, i, 0);
            ui.layoutPlans->addWidget(editButton, i, 1);
        }
    }
 
    QString dataNumber;
    float progress;
    float VWasted = (float)wasted / total * 100;
    float VPlans = (float)endedPlans / totalPlans * 100;
    float VWasted90 = VWasted - ui.spinBoxMinWasted->value();
    if (VWasted90 <= ui.spinBoxMinWasted->value()) {
        progress = VPlans;
    }
    else {
        progress = (((float)VWasted90 / (100 - ui.spinBoxMinWasted->value())) + VPlans) / 2;
    }
    
    dataNumber = "Виконані плани: " + QString::number(endedPlans) + "/" + QString::number(totalPlans) + 
        "\t|\tВиконані плани (%): " + QString::number((int)VPlans) + "%\t|\tПрогрес: " + QString::number((int)progress);
 
    ui.labelData->setText(dataNumber);
}
 
void plans_w::clearLayout(QGridLayout *layout) {
 
    while (layout->itemAt(0))
    {
        QLayoutItem *item = layout->itemAt(0);
 
        layout->removeItem(item);
        layout->removeWidget(item->widget());
        delete item->widget();
        delete item;
        layout->update();
    }
}
 
void plans_w::savePlans(){
 
    for (int i = 0; i < ui.layoutPlans->rowCount(); i++) {
 
        QString oldStr = qobject_cast<QCheckBox*>(ui.layoutPlans->itemAtPosition(i, 0)->widget())->text();
        bool mode = qobject_cast<QCheckBox*>(ui.layoutPlans->itemAtPosition(i, 0)->widget())->isChecked();
 
        QString path = "plans/" + oldStr.left(oldStr.indexOf('|') - 2) + ".txt";
        QFile fileW(path);
 
        if (fileW.open(QIODevice::WriteOnly)) {
 
            QString endStr;
 
            endStr += QString::number(mode) + "#" + oldStr.right(oldStr.size() - oldStr.indexOf("|") - 2);
 
            fileW.write(endStr.toStdString().c_str());
 
            reloadPlans();
        }
    }
}
 
void plans_w::reloadPlans_click() {
    reloadPlans();
}
 
void plans_w::addPlan_click() {
    addPlan(ui.lineEditPlans->text());
 
    reloadPlans();
}
 
void plans_w::editPlan_click() {
 
    QPushButton *widClick = qobject_cast<QPushButton*>(sender());
    int row, column, rs, cs;
    ui.layoutPlans->getItemPosition(ui.layoutPlans->indexOf(widClick), &row, &column, &rs, &cs);
 
    QString oldStr = qobject_cast<QCheckBox*>(ui.layoutPlans->itemAtPosition(row, 0)->widget())->text();
    bool mode = qobject_cast<QCheckBox*>(ui.layoutPlans->itemAtPosition(row, 0)->widget())->isChecked();
    QString zstr1 = oldStr, zstr2 = oldStr, zstr3 = oldStr;
 
    QString newComments = QInputDialog::getText(this, "редагування коментарів",
        "Введіть нові коментарі.", QLineEdit::Normal, zstr1.right(zstr1.size() - zstr1.indexOf("|") - 2));
 
    QString path = "plans/" + oldStr.left(oldStr.indexOf('|') - 2) + ".txt";
    QFile fileW(path);
 
    if (fileW.open(QIODevice::WriteOnly)) {
 
        QString endStr;
 
        endStr += QString::number(mode) + "#" + newComments;
 
        fileW.write(endStr.toStdString().c_str());
 
        reloadPlans();
    }
}
Подключаю в DataDays.h (первое окно).
C++ (Qt)
1
#include "plans_w.h"
Законектил кнопку в конструкторе в DataDays.cpp (первое окно).
C++ (Qt)
1
connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(openPlans_w_click()));
Создал окно в DataDays.cpp (первое окно).
C++ (Qt)
1
2
3
4
5
6
void DataDays::openPlans_w_click(){
 
    plans_w *wind = new plans_w;
    wind->getData(&countWASTED, &countTotal);
    wind->show();
}


Добавлено через 36 минут
Получилось решить проблему поменяв Release на Debag. И ещё компилятор мне выдал несколько ошибок. Буду решать.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.02.2020, 23:59
Ответы с готовыми решениями:

В IE 6.0 через window.open создаю новое окно с параметром resizeable=yes, но создаваемое окно упорно не позволяет менять размер.
В IE 6.0 через window.open создаю новое окно с параметром resizeable=yes, но создаваемое окно упорно не позволяет менять размер. ...

Вывод время, когда был загружен файл на сервер
Здравствуйте. Помогите не как не могу сделать время о выводе когда был загружен последний файл на сервер в каталог. Вот сам скрипт: ...

Part2 создаю исполняемый файл запускаю окно появляется на доли секунды и изчезает
Поскольку основная тема закрыта, добавлю кое-что в новой. Модераторы перенесут, если посчитают нужным. Инфа прежде всего актуальна для...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2020, 23:59
Помогаю со студенческими работами здесь

Ошибка - "Файл символов не загружен"
Делал себе проект целую неделю, все было в порядке и тут...... какая-то ошибка, я не могу понять с чем она связана?

Синий экран на ноутбуке, когда он не загружен
Столкнулся с проблемой синего экрана на ноутбуке asus tuf (ryzen 7 4800h, gtx 1650ti). Синий экран появляется, когда ноутбук не...

Закрыть окно, из которого создано новое окно
Как мне закрыть окно из которого я создал новое окно? Window1 window = new Window1(); window.Owner = this; window.Show(); ...

Смешно) Когда загружен винт - шумят колонки
Собсно.. мне смешно .. и дико не удобно от такой ситуации. Поменял материнскую плату. Всё поставил. Всё ок. В начале не придавал значения....

Когда создаю InputField не могу его нормально использовать
Когда хочу добавить InputField происходит вот это. Если что область камеры снизу слева. Я даже не могу сам InputField сделать меньше,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru