2010-12-21 77 views
2

背景:我正在研究一個基於Qt的大型GUI,它處理所有用戶與觸摸屏的交互。該程序的設計使得用戶不需要訪問命令提示符即可執行任何操作,包括重新校準觸摸屏。我寫了一個模仿tslib的ts_calibrate實用程序,它的運行方式爲QWidget,並且可以修改tslib的校準文件/etc/pointercal重新加載tslib觸摸屏校準

但是,雖然我可以修改校準文件,但在關閉並重新啓動程序之前,對校準的更改似乎不會應用。我寫了一個腳本,可以處理重新打開程序,但我想找到一個更優雅的方式來做到這一點,使用戶的麻煩保持在最低限度。

簡而言之,有在Qt的班,這將重新加載上飛tslib的的校準文件的一個可用的功能,而無需重新啓動應用程序?我已經瀏覽了QWSServer class reference,但我沒有發現任何看起來像我想要的東西。

回答

4

事實證明,驅動程序可以在不重新啓動應用程序的情況下重新加載。要做到這一點,你可以關閉並重新打開定點裝置(S),在QWSServer class像這樣使用方法:

#include <QWSServer> 

... 

QWSServer::instance()->closeMouse(); 
QWSServer::instance()->openMouse(); 

這將導致tslib的的校準文件重新加載。例如,如果您啓動的程序校準錯誤,請在程序運行時更正觸摸屏的校準文件,然後調用這些方法,指針將調整爲新校準。

2

tslib與Qt無關。您可以下載tslib的源文件並查看tests/ts_calibrate.c的功能。

+0

我同意它與Qt本身無關,但我的Qt版本是用tslib驅動程序編譯的(請參閱http://doc.qt.nokia.com/4.6.2/qt-embedded-pointer。 HTML)。正如它在那裏所說的那樣,「鼠標驅動程序在開始運行時由服務器應用程序加載」。我的問題是,是否可以在不停止並重新啓動程序的情況下重新加載驅動程序。我知道ts_calibrate.c是什麼 - 在我的問題中,我提到我已經對程序進行了反向設計。 – 2011-01-03 16:14:44