У меня есть QMainWindow, и я хочу обработать сигнал "clicked" из меньшего виджета (такого как представление таблицы) внутри него.
Первоначально я подключаю сигнал к слоту этого QMainWindow, этосамый распространенный подход.Теперь мне нужно сказать, какая кнопка мыши нажата, и выполнить разные действия для левой и правой кнопки. Я обнаружил, что сигнал «нажал» не содержит информацию о событии мыши.
Я пытался реализовать «"mousePressEvent", но есть некоторые проблемы.если действие мыши воздействует на меньший виджет, MainWindow не перейдет в его mousePressEvent.
В некоторых документах говорится, что мы можем сказать кнопку с помощью QQApplication :: mousebuttons ()
http://bugreports.qt -project.org / browse / QTBUG-1067
, и я также нашел пример кода.Тем не менее, это для «события нажатия», но я хочу получить кнопку мыши для «события щелчка».Ниже приведен пример кода:
connect(moduleTree,SIGNAL(itemPressed(QTreeWidgetItem *, int)),this,SLOT(SlotItemClicked(QTreeWidgetItem *, int)));
void CGuiMainwindow::SlotItemClicked(QTreeWidgetItem *item, int column)
{
if (qApp->mouseButtons() == Qt::LeftButton)
{ return; }
if (qApp->mouseButtons() == Qt::RightButton)
{
......
}
}
Когда я пытаюсь это сделать, ни одно из двух утверждений if не будет удовлетворено, я не знаю почему.qApp-> mouseButtons () всегда возвращает 0, как я могу получить нажатую кнопку мыши с помощью QApplication :: mouseButtons?
В моем коде слот выглядит так:
void clickItem( const QModelIndex & idx){.....}