我有一个程序,捕捉一个单一的按键,然后输出的键,是按下。问题是,我无法返回按下的键的值,并且无法获得箭头键来输出任何内容。这是我的密码:
myApp.h
class someClass: public QDialog
{
Q_OBJECT
public:
...<snip>...
private:
...<snip>...
protected:
void keyPressEvent(QKeyEvent *e);
};myApp.cpp
MyApp::MyApp(QWidget *parent) :
QDialog(parent),
ui(new Ui::myApp)
{
QWidget::grabKeyboard();
ui->setupUi(this);
}
void someClass::keyPressEvent(QKeyEvent *e)
{
qDebug() << "You typed " + e->key();
}这里有两个问题。首先,当我键入任何键时,就会得到输出,类似于调试窗格中的以下内容:
gw492_32\include/QtCore/qstring.h
w492_32\include/QtCore/qstring.h
492_32\include/QtCore/qstring.h
92_32\include/QtCore/qstring.h我输入了abcd以获得上面的内容。key()不应该给我按下的键的整数值吗?
第二个问题是,当我按下一个箭头键时,除了一个空行外,我在调试窗格中什么也得不到。同样,我不应该看到向上箭头的整数值吗?(列出的这里键的值)。然后如何输出密钥的ASCII值?
任何帮助都是非常感谢的。
发布于 2016-02-07 00:39:41
输出看起来肯定是不想要的指针算法正在发生。这是不确定的行为。
"You typed " + e->key()通过"You typed "通过e->key()将指针向前推进,并使其指向另一个位置,在本例中,该位置被作为输出的字符串占用。
如果要正确打印它,请执行以下任何操作:
qDebug() << "You typed " << e->key();
qDebug() << "You typed " + QString::number(e->key());
qDebug() << QString("You typed %1").arg(e->key());https://stackoverflow.com/questions/35248339
复制相似问题