树莓派 QT 编程下的硬件中断
生活随笔
收集整理的這篇文章主要介紹了
树莓派 QT 编程下的硬件中断
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個標題可以有點別扭 表意不明
本文主要記錄了 這個遇到的問題
環境描述 : 在qt中想使用gpio 來用作中斷控制 一個TabWidget 的翻頁
這個是WiringPi庫中的中斷注冊函數 后面可以看到是個函數指針 直接把函數名傳進去就好,
int wiringPiISR (int pin, int edgeType,void (*function)(void))可是問題就出來了,顯然這個如果是在成員函數中的話是需要靜態函數的(也可以不包含在一個類中)
然而如果要使用QT中的機制(信號與槽 emit,etc) 必須是QOBJECT 的對象 且是其非靜態函數
于是就遇到了靜態函數訪問非靜態成員的問題
本來打算使用事件系統繞過 比如按鍵事件 于是查詢了一些軟鍵盤的資料 可是顯得太復雜和冗余,重要的是沒有可用的庫,最后直面問題總結出上面的問題了;
下面給出重要的參考文章(感謝這個自由的互聯網時代)
C++靜態成員函數訪問非靜態成員的幾種方法
http://www.cnblogs.com/rickyk/p/4238380.html
雖然評論說是這種方法不可取,不過的確繞不開這個
另外提醒自己 靜態變量的使用
聲明完了之后記得在Cpp中進行初始化
在頭文件MainWindow.h的類中聲明
public:static int i;在MainWindow.cpp中定義:
int MainWindow::i=1;注意不要在cpp的其他函數中定義,不能被任何函數所包含
使用:
總結
以上是生活随笔為你收集整理的树莓派 QT 编程下的硬件中断的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 树莓派wiringPi库详解
- 下一篇: 我想我们都没太在意