QT Linux編程注意事項

1、在系統中複製程序到儀器的SD卡中會出現系統不能進入開機啓動程序?
在系統啓動後,此時啓動的進度條快達到100%,通過串口操作,將根目錄下的tmp文件夾(/tmp)裏面的所有文件和文件夾刪除,注意不能將tmp文件夾刪了;也可在向啓動卡複製文件時,修改卡目錄的權限(sudo chmod -R 777 /media/rootf)。
2、Qt下自行實現的Sleep()函數換一下,會使CPU使用率高達%90以上(http://blog.sina.com.cn/s/blog_74a459380102uwcb.html):
原來的爲:
void sleepmsec(unsigned int msec)       //以下這個代碼主要是實現以毫秒爲單位的延時
{
    if(msec<=0)
        return;
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime ) //該處的循環會比較多的佔用CPU
        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);//該處用空閒時間刷新循環事件,但效果沒有下面的好
}
現更改爲:
class SleeperThread:public QThread
{
public:
    static void msleep(unsigned long msecs)
    {
        QThread::msleep(msecs);
    }
};


void sleepmsec(unsigned int msec)       //以下這個代碼主要是實現以毫秒爲單位的延時
{
    if(msec<=0)
        return;
    SleeperThread::msleep(msec); //使用線程的延時,很好的降低CPU的使用率

}




3、
bool MainWindow::eventFilter(QObject *obj, QEvent *e)
{
    if (obj == button)         //響應button的MouseButtonPress和MouseButtonRelease事件
    {
        if (e->type() == QEvent::MouseButtonPress)
        {
            QMouseEvent *event = static_cast<QMouseEvent*> (e);
            button->setText(QString("Press: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));
            return true;
        }
        else if (e->type() == QEvent::MouseButtonRelease)
        {
            QMouseEvent *event = static_cast<QMouseEvent*> (e);
            button->setText(QString("Release: %1, %2").arg(QString::number(event->x()), QString::number(event->y())));
            return true;
        }
        else
        {
            return false;
        }
    }
    return QMainWindow::eventFilter(obj, e);
}


//處理自定義事件:
bool CDlgMain::event(QEvent *event)
{
    if (event->type() == QEvent::MouseButtonRelease)
    {
        QMouseEvent *e = static_cast<QMouseEvent*> (event);
        QPoint point;
        point.setX(e->x());
        point.setY(e->y());
        QRect qlRect = pPBBattery->geometry();
        if(e->button() == Qt::LeftButton && qlRect.contains(point))
        {
            ShowLabelCurDataInfo();
        }
        //qDebug() << tr("CDlgMain::event----event->type() == QEvent::MouseButtonRelease---------");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章