我需要在QWidget(麪包板)的mouseMoveEvent
內獲得鼠標下像素的顏色。目前,我有這樣的代碼 - >什麼是在鼠標下獲得QWidget像素顏色的最快方法?
void Breadboard::mouseMoveEvent(QMouseEvent *e)
{
QPixmap pixmap = QPixmap::grabWindow(winId());
QRgb color = pixmap.toImage().pixel(e->x(), e->y());
if (QColor(color) == terminalColor)
QMessageBox::information(this, "Ter", "minal");
}
看看(縮小)截圖如下─
當用戶移動他的線路板鼠標,孔應該得到強調一些不同顏色(如紅色圓圈)。當鼠標退出時,應恢復以前的顏色(灰色)。所以,我需要做下面的步驟 -
- 取色,鼠標下
- 根據顏色,floodfill孔。 (使用顏色區分不同的孔)
- 在鼠標移出時,恢復顏色。將有電線穿過孔,所以我不能只更新小矩形(孔)。
這樣做的最快方法是什麼?我嘗試提取顏色不起作用,即我上面的代碼中的消息框從不顯示。此外,我懷疑我的現有代碼是否足夠滿足我的目的。請記住,您將在麪包板上移動鼠標的速度有多快。
注 - 我能夠使用wxWidgets框架來做到這一點。但是由於一些項目停滯不前的問題。我現在正在使用Qt重寫它。
您被邀請查看代碼https://github.com/vinayak-garg/dic-sim
+1謝謝!那麼我可以將'Breadboard'作爲'QGraphicsScene'對象而不是將它變成'QWidget'嗎? –
是的,這聽起來像一個選項。爲「細胞」/洞洞建立一個自定義類,如果你需要自定義行爲,則爲「壩」/線創建一個自定義類。然後將它們添加到您的麪包板場景。 (這一切都非常快,即使在場景中有大量物品。) – Mat
這正是我所需要的。謝謝! –