Qt键盘枚举到QString

时间:2016-06-16 07:48:25

标签: qt

我有一段这样的代码:

if(keyEvent->key()==Qt::Key_S && keyEvent->modifiers()==Qt::AltModifier) 
    {
        // my code
    }

我想将Qt::Key_SQt::AltModifier替换为两个字符串" KEY_S"和" ALT"我打算从文件中读取。我不知道该怎么做。我试过了QKeySequence,但是没有用。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

如果您在Qt::Key中获得QKeyEvent值,则只需使用QKeyEvent::text()

QString stringKey = event->text();

但正如文件中所述:

  

当Shift,Control,Alt和Meta等修饰键时返回值   在平台之间按下的方式不同,可能会返回一个空字符串。

所以你可能想要逐个处理它们,只需给它们你想要关联的字符串:

if (event->key() == Qt::Key_Alt)
    QString stringKey = "ALT";

答案 1 :(得分:2)

您可以使用Qt元对象系统在运行时将枚举键的真实名称作为字符串获取:

site <-c(1,41)
for (i in site){
LinkShare_Report_[i] <-
  read.csv(text=rawToChar(
    GET(url_signature_orders_report,
        query=list(token=LS_Bellaboo_Token,
                   start_date=from,
                   end_date=to,
                   network=site))
    [["content"]]),skip = 4, header = TRUE, sep =',')
}

请注意,如果没有相应的密钥,void keyPressEvent(QKeyEvent* e) { int enum_index = qt_getQtMetaObject()->indexOfEnumerator("Key"); const char* string = qt_getQtMetaObject()->enumerator(enum_index).valueToKey(e->key()); qDebug() << string; } 可能会返回空指针。