1. 程式人生 > >Qt使用過程中遇到的問題

Qt使用過程中遇到的問題

一、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成功。