Qt使用過程中遇到的問題
阿新 • • 發佈:2018-12-20
一、QObject eventFilter事件過濾器
想要解決的問題:1.自定一個自定義父控制元件,裡面包含一個自定義的子控制元件。2.子控制元件的功能是顯示一個字串。3.點選自控制元件的區域時,父控制元件無法收到點選事件。
解決思路:使用事件過濾器,在父控制元件上接受所有事件,過濾掉想要在父控制元件處理的問題後在轉發到各個子控制元件。
遇到的問題:bool QObject::eventFilter(QObject *watched,QEvent *event)
1.事件過濾器接受到的響應控制代碼為Object型別,需要將子控制元件也轉換為該型別才能進行比較。使用
static_cast<const QObject*>(m_pSunWidget)將子控制元件的控制代碼轉換為QObject,再與watched進行對比。
2.需要在子控制元件中實現bool SunWidget::operator == (const QObject * Item)操作符,用於支援QObject比較操作。
bool ParentWidget::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::MouseButtonRelease)
{
emit touchSignal()
return true;
}
else
{
return false;
}
}
二、QCustomPlot控制元件collect2: error: ld returned 1 exit status問題
對比了QCustomPlot給的例子,發現pro檔案中沒有引入printsupport。改為QT += widgets printsupport成功。