mac izquierdo hacer funciona example derecho como clic qt

izquierdo - qpushbutton qt



Cómo detectar la tecla modificadora con el clic del mouse en Qt (5)

El estado de las teclas modificadoras del teclado se puede encontrar llamando a la función modificadores () heredada de QInputEvent.

http://doc.qt.io/qt-5/qmouseevent.html

Tengo un QTableWidget y me gustaría que presionar CTRL mientras QTableWidget clic en el encabezado de una columna marca toda la columna. Obtener el índice de la columna no es un problema ya que hay una señal de sección presionado que me da el índice actual de la columna en la que se hace clic. ¿Cómo puedo obtener el estado de los modificadores de teclado cuando se hace clic en una columna?


Esto funciona para mí

if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {



Puede usar QGuiApplication::queryKeyboardModifiers() que es más fácil de usar:

if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier)) { // Do a few things }


esto es realmente molesto, tengo que instalar un eventFilter y eliminar la sección Manipulador presionado

ui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);

Dentro de eventFilter puedo verificar si se presionó una tecla como

bool MainWindow::eventFilter(QObject *object, QEvent *event) { if(event->type() == QEvent::MouseButtonPress) { if(Qt::ControlModifier == QApplication::keyboardModifiers()) { QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event); if(mouseEvent) { if(mouseEvent->button()== Qt::LeftButton) { ui->tableWidget->selectColumn(ui->tableWidget->itemAt(mouseEvent->pos())->column()); return true; } } } } return QWidget::eventFilter(object,event); }