Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Senia_Bezrubashkin от Февраль 04, 2013, 10:46



Название: Не работает контекстное меню.
Отправлено: Senia_Bezrubashkin от Февраль 04, 2013, 10:46
Определяю сигнал
Код:
signals:
    void deletetriggered(QAction* a, const QModelIndex & index);
соединяю его с слотом
Код:
connect(this, SIGNAL(deletetriggered(QAction*, const QModelIndex &)),
            this, SLOT(test(QAction*, const QModelIndex &)));
                    ..................
void MyListView::test(QAction* a, const QModelIndex & b)
{
        qDebug()<<a->text();
        qDebug()<<b;
}
так переопределяю нажатие кнопки мыши
Код:
void MyListView::mousePressEvent(QMouseEvent* event)
{
    QModelIndex index = indexAt(event->pos());
    if (index.isValid())
    {
        if (event->button() == Qt::RightButton)
        {
            QAction* b = m_pmnu->exec(event->globalPos());
            emit deletetriggered(b, index);
        }
        else
            QListView::mousePressEvent(event);
    }
}
при клике правой кнопкой мыши на элементе списка (таблица БД) всплывает меню. Далее, при клике на пункте меню тестовый слот отрабатывает как надо, но если кликаю вне контекстного меню - прога вылетает по неизвестной ошибке (точнее, мне не известной ошибке... код 255). Подскажите, что не так делаю. Заранее спасибо.


Название: Re: Не работает контекстное меню.
Отправлено: GreatSnake от Февраль 04, 2013, 11:24
Код:
            QAction* b = m_pmnu->exec(event->globalPos());
            emit deletetriggered(b, index);

При клике вне элемента меню m_pmnu->exec() возвращает 0.


Название: Re: Не работает контекстное меню.
Отправлено: Senia_Bezrubashkin от Февраль 04, 2013, 12:26
О! Работает. Спасибо.