我有一段这样的代码:
if(keyEvent->key()==Qt::Key_S && keyEvent->modifiers()==Qt::AltModifier)
{
// my code
}
我想将Qt::Key_S
和Qt::AltModifier
替换为两个字符串" KEY_S"和" ALT"我打算从文件中读取。我不知道该怎么做。我试过了QKeySequence
,但是没有用。有人可以帮忙吗?
答案 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;
}
可能会返回空指针。