Russian Qt Forum
Ноябрь 23, 2024, 22:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Qt4.0.0 QTableWidgetItem: пустая строка?  (Прочитано 8054 раз)
Turing
Гость
« : Декабрь 28, 2005, 09:59 »

Qt4.0.0
При вызовеQTableWidgetItem::text () прога выдает ошибку, если в этой ячейке таблицы нет текста.


А разве эта функция не может возвратить пустую строку Непонимающий
Может есть какие-нибудь флаги указывающие, что в ячейке таблицы нет текста?!

Может кто знает как решить эту проблему?!
Записан
Dendy
Гость
« Ответ #1 : Декабрь 28, 2005, 10:02 »

Код в студію. Та версію Qt.
Записан
Turing
Гость
« Ответ #2 : Декабрь 28, 2005, 10:20 »

QTableWidget *tableWidget;
....
QTableWidgetItem *tableWidgetItem;
QString string;

tableWidgetItem = tableWidget->item(0, 0);
string = tableWidgetItem->text(); //здесь и падает прога
....
Записан
Dendy
Гость
« Ответ #3 : Декабрь 28, 2005, 10:39 »

Хммм... перевір що повертає:

Код:
tableWidgetItem = tableWidget->item(0, 0);
// tableWidgetItem == 0 ???
Записан
Turing
Гость
« Ответ #4 : Декабрь 28, 2005, 10:49 »

У меня оригинального кода нет под рукой...
Все писал на скорую руку.

Весь смысл в том, что tableWidgetItem->text() для непустой строки таблицы отлично работает, а для пустой выдает ошибку!!!

добавлено спустя 1 минуту:

 
Цитата: "Dendy"
Хммм... перевір що повертає:

Код:
tableWidgetItem = tableWidget->item(0, 0);
// tableWidgetItem == 0 ???


Нет
Записан
Steven_Orko
Гость
« Ответ #5 : Декабрь 28, 2005, 12:50 »

А версия Qt какая?? Когда происходит обращение к элементу, не содержащему текст, выдается объект QVaraint, тип хранения данных которого установленн как Invalid.
Сам метод text() вызывает преобразование в строку объекта типа QVariant, а тот Invalid. Вот и получается падение. Хотя у меня в 4.1 все прекрасно работает и возвращает пустая строка...
Записан
Dendy
Гость
« Ответ #6 : Декабрь 28, 2005, 13:08 »

Сам не дивився, але може QTableWidget не перевіряє що індекс за межами масиву (заради оптимізації)? Ось і повертає тобі якийсь вказівач ні на що. Зкомпіль з дебажними лібами - там стоять перевірки на індекси.
Записан
Turing
Гость
« Ответ #7 : Декабрь 29, 2005, 13:38 »

Цитата: "Steven_Orko"
А версия Qt какая?? Когда происходит обращение к элементу, не содержащему текст, выдается объект QVaraint, тип хранения данных которого установленн как Invalid.
Сам метод text() вызывает преобразование в строку объекта типа QVariant, а тот Invalid. Вот и получается падение. Хотя у меня в 4.1 все прекрасно работает и возвращает пустая строка...


Версия 4.0.0
Спасибки за помощь Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 20.