2012-02-29 54 views
1

Qt似乎行爲奇怪:當鼠標雙擊或拖動小部件時,它將觸發Ctrl-C鍵事件。這裏是我的代碼:顯示在小部件奇怪的是,雙擊/鼠標拖動將觸發關鍵事件「CTRL-C」

class CWidget: public QWidget 
{ 
    Q_OBJECT 

public: 
    CWidget() 
    { 

    }; 
    virtual ~CWidget() 
    { 
    } 

protected: 
    void keyPressEvent (QKeyEvent * event) 
    { 
     if (event->key() == Qt::Key_C && (event->modifiers() & Qt::ControlModifier)) 
     { 
      qDebug() << "strange copy: Ctrl-C"; 
     } 
     QWidget::keyPressEvent(event); 
    } 
}; // 

後,您可以進行鼠標雙擊和拖拽圍繞它,並且調試信息「怪副本:按Ctrl-C」被打印出來。我一直在網上搜索了兩天,結果什麼都沒發現。

我使用錯了還是Qt的錯誤?

的代碼下(VS2008 + Qt的外接+的Qt 4.7.3)和(qcreator +的Qt 4.7.3),Windows XP SP2測試

回答

0

您必須檢查:

!event->isAutoRepeat(); 
-1

我遇到了同樣的問題,並最終找出原因。它是由翻譯軟件引起的,如「有道詞典」。

當您雙擊或拖拽時,它可能會在文本區域中選取一些文本,並且翻譯軟件通過某種方式劫持該操作,並自動觸發旨在獲取所選文本的翻譯動作它會自動。這導致了這種奇怪的行爲。

這不太可能發生在英文用戶身上,並且如果翻譯軟件未打開,則不太可能重現該問題。