'da fare tıklatma anahtarı nasıl bulunur? QTableWidget
var ve bir sütun üstbilgisini tıklatırken CTRL'ye basmak tüm sütunu işaretler. Sütun dizini almak için sorun değil çünkü bana sectionPressed sinyalini tıkladı. Bir sütun tıklandığında herhangi bir klavye değiştiricisinin durumunu nasıl alabilirim?Qt
Qt
cevap
deneyin Her zaman kullanılabilir
Qt 5'de QGuiApplication::keyboardModifiers()'u deneyin.
Klavye değiştirici tuşlarının durumu, QInputEvent öğesinden devralınan değiştiriciler() işlevini çağırarak bulunabilir.
biliyorum ama ilişkili yuvasına içinde hiçbir nesne diğer ardından sütun indeksi sectionPressed gerekiyor. Olay yok, gönderen yok, hiçbir şey yok. – tfl
Belki de, değiştiricilerin durumunu mouseReleaseEvent içinde, sinyalden önce gerçekleşmesi gereken şekilde kaydedebilirsiniz. –
bu gerçekten sinir bozucu, çok
gibi basılmış bir eventfilter yükleyip Bir anahtarın Hava kontrol edebilirsiniz eventfilter içinde işleyicisiui->tableWidget->horizontalHeader()->viewport()->installEventFilter(this);
sectionPressed kaldırmak zorunda
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);
}
Bu benim için çalışır.
if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) == true) {
Sen kullanımı daha basit olan QGuiApplication::queryKeyboardModifiers()
kullanabilirsiniz:
if(QGuiApplication::queryKeyboardModifiers().testFlag(Qt::ShiftModifier))
{
// Do a few things
}
hepsini buldum – tfl
ŞİMDİ Ben bu yanıtı yanıltmak! Herşeyi dağınık bir alt sınıf olarak yeniden yazdıktan sonra 'olay' nesnesine ulaşabilirdim :-) D'oh! –
@Freedom_Ben ile benzer Ben de alt sınıf veya olay filtresi öneren tüm örneklere bakıyordum ... ama bu cevabı bulduğum benim sebat (teşekkürler tembellik olabilir: P). Bir çekicilik gibi çalışır ... İstediğim gibi EXACTLY! Yardımı için teşekkürler Roku! – zeFree