Russian Qt Forum

Qt => Общие вопросы => Тема начата: Turing от Декабрь 28, 2005, 09:59



Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Turing от Декабрь 28, 2005, 09:59
Qt4.0.0
При вызовеQTableWidgetItem::text () прога выдает ошибку, если в этой ячейке таблицы нет текста.


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

Может кто знает как решить эту проблему?!


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Dendy от Декабрь 28, 2005, 10:02
Код в студію. Та версію Qt.


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Turing от Декабрь 28, 2005, 10:20
QTableWidget *tableWidget;
....
QTableWidgetItem *tableWidgetItem;
QString string;

tableWidgetItem = tableWidget->item(0, 0);
string = tableWidgetItem->text(); //здесь и падает прога
....


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Dendy от Декабрь 28, 2005, 10:39
Хммм... перевір що повертає:

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


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Turing от Декабрь 28, 2005, 10:49
У меня оригинального кода нет под рукой...
Все писал на скорую руку.

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

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

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

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


Нет


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Steven_Orko от Декабрь 28, 2005, 12:50
А версия Qt какая?? Когда происходит обращение к элементу, не содержащему текст, выдается объект QVaraint, тип хранения данных которого установленн как Invalid.
Сам метод text() вызывает преобразование в строку объекта типа QVariant, а тот Invalid. Вот и получается падение. Хотя у меня в 4.1 все прекрасно работает и возвращает пустая строка...


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Dendy от Декабрь 28, 2005, 13:08
Сам не дивився, але може QTableWidget не перевіряє що індекс за межами масиву (заради оптимізації)? Ось і повертає тобі якийсь вказівач ні на що. Зкомпіль з дебажними лібами - там стоять перевірки на індекси.


Название: Qt4.0.0 QTableWidgetItem: пустая строка?
Отправлено: Turing от Декабрь 29, 2005, 13:38
Цитата: "Steven_Orko"
А версия Qt какая?? Когда происходит обращение к элементу, не содержащему текст, выдается объект QVaraint, тип хранения данных которого установленн как Invalid.
Сам метод text() вызывает преобразование в строку объекта типа QVariant, а тот Invalid. Вот и получается падение. Хотя у меня в 4.1 все прекрасно работает и возвращает пустая строка...


Версия 4.0.0
Спасибки за помощь ;)