LINUX.ORG.RU

Баг в Qt? Или у меня в голове?


0

0

Здравствуйте, уважаемые знатоки. Столкнулся я со следующей проблеммой:
в программе на qt по нажатию кнопки выполняется следующая функция (слот):

void testing::calc()
{
    QMessageBox msgbox;
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        {
                msgbox.setText(ui.tableWidget->item(j,i)->text());
                msgbox.exec();
        }
}

где matrix - это TableWidget, а ui подготовлен QtCreator (потестить решил).
Если в ячейках таблицы есть какие-нибудь значения - все нормально,
выводит все сообщения, но если хотя бы одна ячейка пустая -
программа падает, а debug переходит на строчки

     inline QString text() const
        { return data(Qt::DisplayRole).toString(); }

файла qtablewidget.h.

Подскажите, пожалуйста, это я что-нибудь упустил, или стоит писать багрепорт?

Re: Баг в Qt? Или у меня в голове?

Что ты собственно ожидал? Пытаешься получить текст там где его нет.

imp ★★ ()
Ответ на: Re: Баг в Qt? Или у меня в голове? от imp

Re: Баг в Qt? Или у меня в голове?

>Что ты собственно ожидал? Пытаешься получить текст там где его нет.

ожидал очевидно получить пустую строчку. тоесть ту, которая на вызов isNull() будет true возвращать.

По теме. всё очень просто - почитай что возвращает item() - он возвращает указатель на QTableWidgetItem, а если там ничего нет, то 0. ты от нуля пытаешься text() позвать - вот всё и падает. и правильно делает.

Читай документацию.

teferiincub ()
Ответ на: Re: Баг в Qt? Или у меня в голове? от teferiincub

Re: Баг в Qt? Или у меня в голове?

>По теме. всё очень просто - почитай что возвращает item() - он возвращает указатель на QTableWidgetItem, а если там ничего нет, то 0. ты от нуля пытаешься text() позвать - вот всё и падает. и правильно делает.

Точно, протупил немного. Спасибо за то, что носом ткнули. :-)

DiGital ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.