簡體   English   中英

QT QcoreApplication postEvent()行為

[英]QT QcoreApplication postEvent() behaviour

我已經編寫了這個簡單的QT主窗口,僅當我將QString參數傳遞給QKeyEvent時,它才會打印鍵,我希望即使沒有QString參數也能打印鍵?

下面的代碼中的第1部分似乎無效(我沒有在QLineEdit字段中打印密鑰;而第2部分有效並且打印了“ 1”!這是正常現象嗎?在第一次發布事件時會發生什么情況?代碼部分?

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

{
    ui->setupUi(this);
    this->ui->lineEdit->setFocus();

    Qt::Key key = Qt::Key_1;
    // 1
    QKeyEvent *event = new QKeyEvent (QEvent::KeyPress, key ,Qt::NoModifier); 
    QCoreApplication::postEvent(QWidget::focusWidget(), event); // Does not work! No key is set in the widget
    //
    //2 
    QKeyEvent *event2 = new QKeyEvent(QEvent::KeyPress, key, Qt::NoModifier, QKeySequence(key).toString());
    QCoreApplication::postEvent(QWidget::focusWidget(), event2); // this one works! 

}

並非所有按鍵事件都具有文本表示形式(刪除,光標移動,快捷方式等)。 對於那些擁有一個的人, QKeyEvent類將其存儲在其文本中。 您必須提供該文本,否則提供“無文本”事件。

QLineEdit將剛剛添加的文本,而不是從事件類型推斷它(可以看出這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM