Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/40: Рейтинг темы: голосов - 40, средняя оценка - 4.75
22 / 21 / 8
Регистрация: 17.02.2011
Сообщений: 399

SIGABRT abort в QTableWidgetItem settext

06.04.2021, 13:13. Показов 7785. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, шансов наверное мало, но может кто-то подсказать? ПО крашится в момент settext в tablewidget. Также стабильно крашится при закрытии по. Код примерно такой
C++
1
2
3
4
5
6
7
for (int a=0;a<17;a++)
{
for (int b=0;b<17;b++) 
{
Ui->table->item(a, b) - >setText("") ;
} 
}
Ошибка срабатывает при a=16 b=4. Последний раз отладчик показывает на qtablewidget.h inline void qtablewidget ::settext (const qstring & atext) {settext (...)}
Если эти циклы развести то ошибка также пропадает. Но при закрытии по также крашится. Весь код привести не могу, сильно большой.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2021, 13:13
Ответы с готовыми решениями:

Сигнал SIGABRT
Почему выдает SIGABRT вот код test.cpp: #include &quot;obj.h&quot; int main() { Obj hun(&quot;/home/nikita/untitled.obj&quot;); ...

Ошибка Signal: SIGABRT
Здравствуйте. Есть задача. Вот условия: Вот мой код. Он компилируется, но перед выходом из программы вылезает ошибка (Signal:...

QTableWidgetItem
Вставляю в таблицу иконку вот так def on_clicked_btn(self, img): _item = QTableWidgetItem(QIcon(img), &quot;&quot;) ...

4
 Аватар для Annemesski
2674 / 1336 / 480
Регистрация: 08.11.2016
Сообщений: 3,692
06.04.2021, 16:16
Цитата Сообщение от leonidSDF Посмотреть сообщение
Но при закрытии по также крашится. Весь код привести не могу, сильно большой.
тут, скорее всего весь код не нужен, достаочно будет кода функции main() и конструктора MainWindow. Предполагаю (это частая ошибка) что в конструкторе главного окна или в функции main() главному окну устанавливается атрибут WA_DeleteOnClosed при этом главное окно создается на стэке в функции main(). Если так, то либо не ставьте этот атрибут, либо создавайте главное коно динамически через new.

По поводу QTableWidget, Вы уверены что в таблице есть столько строк и столбцов? Почему код не опирается на свойства класса QTableWidget
C++ (Qt)
1
2
3
4
5
6
7
for (int a=0; a < 17 && a < Ui->table->rowCount(); a++)
{
    for (int b=0; b < 17 && Ui->table->columnCount(); b++) 
    {
        Ui->table->item(a, b) - >setText("") ;
    } 
}
1
22 / 21 / 8
Регистрация: 17.02.2011
Сообщений: 399
06.04.2021, 17:45  [ТС]
Можно пояснить чуть подробней что означает на стеке функции main, как это выглядит в двух словах ?
Код по наследству достался, и да я уверен, там их 16. Причём если два for превращу в 4, первые два от 0 до <10, остальные два от 10 до<17, то крашится перестаёт. Я уже подумал дело в версии Linux. Или в памяти. Но со свойством хорошая идея.
Пс. пришла мысль, а вдруг таблица есть а объекта ячейки на последних позициях нет, например кто-то удалил, может даже в другом потоке. Надо проверить на null
0
 Аватар для Annemesski
2674 / 1336 / 480
Регистрация: 08.11.2016
Сообщений: 3,692
06.04.2021, 18:37
Лучший ответ Сообщение было отмечено leonidSDF как решение

Решение

Цитата Сообщение от leonidSDF Посмотреть сообщение
и да я уверен, там их 16
если их там 16, то и проходить надо по 16-ти, а не по 17-ти столбцам и строкам
C++
1
2
3
4
5
6
7
for (int a=0; a < 16; a++) // на последней итерации цикла a = 15, считаем по порядку: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - всего 16 штук
{
    for (int b=0; b < 16; b++) // тут тоже самое, а при b равном 17 цикл пройдет по элементам от 0 до 16, то есть по 17-ти элементам
    {
        Ui->table->item(a, b) - >setText("") ;
    } 
}
Цитата Сообщение от leonidSDF Посмотреть сообщение
что означает на стеке функции main
стэк и куча в С++
у Вас это может выглядеть примерно так
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    MainWindow window; // объект создан на стэке
    window.show();
    /*если здесь задать
    window.setAttribute(Qt::WA_DeleteOnClose);
    то по закрытии окна будет вызван деструктор класса
    MainWindow который будет вызван повторно по завершении функции*/
 
    return a.exec();
} // здесь будет повторный вызов деструктора
Соответственно для окон созданных на стэке этот атрибут устанавливать нельзя, либо нужно создавать эти объекты в куче
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
 
    MainWindow *window = new MainWindow; // объект создан в куче
    window->show();
    /*теперь если здесь задать
    window.setAttribute(Qt::WA_DeleteOnClose);
    то по закрытии окна будет вызван деструктор класса
    MainWindow, но автоматического вызова деструктора по 
    завершении функции не будет*/
 
    return a.exec();
} // здесь все в порядке
0
22 / 21 / 8
Регистрация: 17.02.2011
Сообщений: 399
07.04.2021, 07:23  [ТС]
Не помогло, элементов 17.
Поэтому проверка на размерность проходит, но натыкаюсь на элемент с координатами (16 4) при попытке сделать settext крашится.
Каких то атрибутов delete нету. Но страшней, что происходит с этими элементами, природа эффекта непонятна

Добавлено через 42 минуты
Дополнение, крашится именно в 16.4, если поставить continue, то остальные, например 16 5 уже проходят.

Добавлено через 19 минут
Дополнение, запустил другой qt на др линуксе , крашится перестала.. Магия.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.04.2021, 07:23
Помогаю со студенческими работами здесь

QTableWidgetItem
День добрый Появился вопрос связанный с QTableWidgetItem В groupbox добавил QTableWidget и через &quot;Дизайн&quot; создал необходимые...

Signal: SIGABRT при delete[]
Здравствуйте. Есть у меня такой метод: char *Request::addGetParam(char *link, const char *pKey, const char *val) const { char...

SIGABRT при вызове деструктора
mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include &lt;QMainWindow&gt; #include &quot;plot.h&quot; #include &lt;QFormLayout&gt; ...

Ошибка Thread 1: Signal SIGABRT
Всем добрый вечер. Начал делать небольшое приложение (игра виселица), но не суть. Проблема в том, что при компиляции черный экран на...

SIGABRT после free malloc
не могу почистить string array matches (2 dim) проблема возникает на линии 114 отмеченной как //Cleaning up an array не могу почистить...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru