2014-04-20 46 views
0

我正在使用Qt創建器在C++中製作一個簡單的繪圖程序。我有一個mouseevent,它應該獲得點擊鼠標點的最近點(點)的座標,並將它們放到線的起點座標上。完成了。但是現在該事件應該等待再次點擊鼠標以再次獲得最近的點座標並將它們放到行結束點。但相反,它不會等待第二個輸入,並且也爲線端點放置相同的第一個點。C++ Qt,等待第二次點擊

我該如何讓mouseevent採取兩個點擊輸入,而不是馬上做一切?它甚至有可能嗎?先謝謝你。

+0

「Moah」你爲什麼刪除你的答案。這是正確的。 – user3328230

+0

假設你對我而言意味着,我在嘗試發佈時遇到了一些網站錯誤。我認爲現在已經解決了,並轉貼了。 – mah

回答

1

你不能讓一個事件需要兩次點擊(當然不包括雙擊事件)。但是,您可以在應用程序中建立一個狀態,第一次點擊開始狀態,第二次點擊完成狀態。僞代碼來管理這個:

// in your constructor: 
StartingClickPoint = INVALID; // indicate that we have not entered our special state 


// in your mouse event handler: 
if (StartingClickPoint == INVALID) { 
    // we're only now starting this state; we don't have enough information to complete it 
    StartingClickPoint = CurrentClickPoint; 
    return; 
} 
else { 
    // complete the state handling and arm for the next pair of clicks 
    EndingClickPoint = CurrentClickPoint; 
    DoSomethingWithTheClickPoints(); 
    StartingClickPoint = INVALID; // reset for the next pair of clicks 
}