Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Артем от Март 25, 2017, 20:40



Название: Вылетает приложение
Отправлено: Артем от Март 25, 2017, 20:40
При определении положения курсора, хочу вывести текст ячейки  в консоль, но приложение вылетает (пишет что-то типа принудительной остановки)

 QTableWidgetItem *item;
    QPoint relativeMousePos = QCursor::pos();
    QPoint absoluteMousePos = QWidget::mapToGlobal(relativeMousePos);
    item = ui->tableWidget->itemAt(absoluteMousePos);
qDebug()  << item->text() ;


Название: Re: Вылетает приложение
Отправлено: Mikhail от Март 25, 2017, 21:45
Для начала закомментируй строку
qDebug()  << item->text() ;

А скорее всего проверяй item на NULL.
Если item == NULL то вылет.
Нельзя от нуля взять функцию.


Название: Re: Вылетает приложение
Отправлено: Артем от Март 26, 2017, 00:03
А нет. А почему этот указатель вообще может быть нулевым?


Название: Re: Вылетает приложение
Отправлено: kambala от Март 26, 2017, 01:09
потому что по указанным координатам нет айтема — itemAt() ожидает ведь не глобальные координаты, а локальные координаты таблицы.


Название: Re: Вылетает приложение
Отправлено: Alex Custov от Март 28, 2017, 15:01
Цитировать
QPoint relativeMousePos = QCursor::pos();
QCursor::pos() возвращает глобальные координаты!