ZhiRong's Blog
2010年3月16日 星期二
在Qt中建立不顯示標題欄、邊框的的窗口
viewerWindow->setWindowFlags(Qt::FramelessWindowHint);
在創建窗口的地方的
Qt::WindowFlags 設為 Qt::SplashScreen 可以達到。。
也可以設置成 Qt::FramelessWindowHint | Qt::CustomizeWindowHint 也可以達到。。。自己試試多幾種的組合吧,我的就是試出來的。
Qt::WindowFlags f =Qt::Dialog | Qt::FramelessWindowHint | Qt::CustomizeWindowHint
可以通過QWidget類的setWFlags()函數來設定Qt::FramelessWindowHint來完成(繼承自QWidget的類也是如此,比如QMainWindow)。
比如:
QMainWindow mainWindow;
Qt::WindowFlags flags = 0;
flags |= Qt::FramelessWindowHint;
mainWindow.setWindowFlags(flags);
mainWindow.setFixedSize;
相關的類似屬性還有:
Qt::FramelessWindowHint
Qt::WindowTitleHint
Qt::WindowSystemMenuHint
Qt::WindowMinimizeButtonHint
Qt::WindowMaximizeButtonHint
Qt::WindowContextHelpButtonHint
Qt::WindowShadeButtonHint
Qt::WindowStaysOnTopHint
Qt::CustomizeWindowHint
具體可在http://doc.trolltech.com/3.3/qt.html#WidgetFlags-enum查到所有的Flags。
2010年3月3日 星期三
OpenCV 從抓取webcam 完整程式碼
#include <cv.h> #include <highgui.h> int main(int argc, char** argv) { CvCapture* capture; IplImage *img; capture = cvCaptureFromCAM(0); cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); cvMoveWindow("mainWin", 0, 100); while(cvGrabFrame(capture)) { img=cvRetrieveFrame(capture); // 所有的影像處理都在這裡進行! // for example: 轉灰階 /* IplImage * GRAY = 0; GRAY = cvCreateImage(cvSize(img->width,img->height),IPL_DEPTH_8U,1); cvCvtColor(img, GRAY, CV_RGB2GRAY); cvCvtColor(GRAY, img, CV_GRAY2RGB); cvReleaseImage(&GRAY); */ cvShowImage("mainWin", img); int key=cvWaitKey(10); if(key == 27) // 27=ESC break; } cvReleaseCapture(& capture); return 0; }
2009年7月24日 星期五
[轉貼] Qt4.4.3 在s3c2440平台的移植
Qt4.4.3 在s3c2440平台的移植 版本1.0
首先,從http://trolltech.com/downloads下載針對嵌入式設備的Device Creation版,目前最新穩定版是
qt-embedded-linux-opensource-src-4.4.3。下面是詳細的移植步驟:
1.解壓縮
tar zxf qt-embedded-linux-opensource-src-4.4.3.tar.gz
cd qt-embedded-linux-opensource-src-4.4.3
2.編譯,使用系統默認的圖片庫,保留大部分常用功能,並加入tslib觸摸屏校驗的支持
./configure \
-prefix /new_disk/weiyan/qt/build/ \ //指定安裝的目錄,與開發板上運行的目錄一致
-release -shared \
-fast \
-pch \
-no-qt3support \
-qt-sql-sqlite \
-no-libtiff -no-libmng \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-openssl \
-nomake examples -nomake demos -nomake tools\
-optimized-qmake \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm\
-no-xinerama -no-xshape \
-no-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-qt-mouse-tslib
make (或者gmake)
make install (或者gmake install)
3.設置Qt4應用程序的編譯環境
cp bin/qmake /usr/bin
4.製作Qt4的文件系統,進行適當的裁減
只複製必須的Qt庫
cd $rootfs #$rootfs 為文件系統的目錄
mkdir new_disk/weiyan/qt/build –p && cd new_disk/weiyan/qt/build
cp /new_disk/weiyan/qt/build/lib/libQtCore.so ./
cp /new_disk/weiyan/qt/build/lib/libQtGui.so.4 ./
cp /new_disk/weiyan/qt/build/lib/libQtNetwork.so.4 ./
mkdir fonts
只複製支持中文顯示的文泉驛字體
cp /mnt/qt/build/lib/fonts/wenquanyi_120_50.qpf fonts
5.編譯內置的測試程序
cd $QTDIR/examples/qws/mousecalibration
qmake && make
cp mousecalibration $rootfs/new_disk/weiyan/qt/build/
6.在wy2440開發板上運行QT4測試程序
重新生成yaffs2文件系統
mkyaffs $rootfs rootfs.yaffs2
已生成的文件系統大小為24M
ll rootfs.yaffs -h
-rw------- 1 root root 24M 2008-11-02 03:09 rootfs.qt4
在wy2440開發板上重新燒寫文件系統,進入到U-Boot
WEIYAN # run uprootfs 自動升級文件系統
WEIYAN # boot 啟動內核
設置QT4運行的環境變量
export QTDIR=/new_disk/weiyan/qt/build
export LD_LIBRARY_PATH=$QTDIR/lib:$OPIEDIR/lib
export PATH=$QTDIR/bin:$OPIEDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/event1
export TSLIB_ROOT=/usr
export TSLIB_TSDEVICE=/dev/event1
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_CONFFILE=/etc/ts.conf
執行基於Qt4的觸摸屏校驗
[root@WEIYAN /]$ ./new_disk/weiyan/qt/build/mousecalibration
2009年6月9日 星期二
MFC 學習筆記,Invalidate()、RedrawWindow()、UpdateWindow()的差異
Invalidate()是強制系統進行重繪,但是不一定就馬上進行重繪。因為Invalidate()只是通知系統,此 時的視窗已經變為無效。強制系統調用WM_PAINT,而這個消息只是Post(寄送)就是將該消息放入訊息佇列。當執行到WM_PAINT消息時才會對視窗進行重繪。
UpdateWindow只向表單發送WM_PAINT消息,在發送之前判斷GetUpdateRect(hWnd,NULL,TRUE)看有無可繪製的 用戶端區域,如果沒有,則不發送WM_PAINT。發送即不經過訊息佇列,直接發送到對應視窗,因此此函數可以立即更新視窗。
RedrawWindow()則是具有Invalidate()和UpdateWindow()的雙特性。聲明視窗的狀態為無效,並立即更新視窗,立即調用WM_PAINT消息處理。
MFC 學習筆記,改變Static Text的顏色、背景色
在類別,右鍵,選擇屬性
在屬性視窗 的訊息 WM_CTLCOLOR 加入消息函數
OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
在函數中加入對應程式碼:
if (pWnd->GetDlgCtrlID()==IDC_STATIC_S_TEXT)
{
pDC->SetTextColor(m_textColor); //設置字體顏色
pDC->SetBkMode(TRANSPARENT); //設置字體背景為透明
// TODO: Return a different brush if the default is not desired
return (HBRUSH)::GetStockObject(WHITE_BRUSH); // 設置背景色
}
else
return hbr;
SetDlgItemText(IDC_STATIC_S_TEXT,"OPENED");設定全域變數m_textColor新的顏色, 然後呼叫RedrawWindow()或是InvalidateRect(NULL)重繪。
m_textColor = RGB(255, 0, 0) ;
GetDlgItem(IDC_STATIC_S_TEXT)->RedrawWindow();
//GetDlgItem(IDC_STATIC_S_TEXT)->InvalidateRect(NULL);
2009年6月3日 星期三
OpenCV 擷取Webcam
轉灰階
IplImage * GRAY = 0; GRAY = cvCreateImage(cvSize(frame1->width,frame1->height),IPL_DEPTH_8U,1); cvCvtColor(frame1, GRAY, CV_RGB2GRAY); cvCvtColor(GRAY, frame1, CV_GRAY2RGB); cvReleaseImage(&GRAY);
啟動WebCam,並指定handle給 Panel
int ncams = cvcamGetCamerasCount(); int width=640; int height=480; Panel1->Width = width; Panel1->Height = height; HWND hwnd = Panel1->Handle; cvcamSetProperty(0, CVCAM_PROP_ENABLE, CVCAMTRUE); cvcamSetProperty(0, CVCAM_PROP_CALLBACK,CaptureCallback); cvcamSetProperty(0, CVCAM_PROP_WINDOW, &hwnd); cvcamSetProperty(0,CVCAM_RNDWIDTH,&width); cvcamSetProperty(0,CVCAM_RNDHEIGHT,&height); cvcamGetProperty(0,CVCAM_CAMERAPROPS,NULL); // 開啟webcam設定介面 cvcamInit(); cvcamStart();
關閉WebCam
cvcamStop(); cvcamExit();
2008年9月8日 星期一
Opensource SIP Stak compared
* VOCAL A stack primary used in servers - has a relationship with Cisco.
* sipX Pingtel its SIP stack, contributed to the SIPfoundry.
* reSIProcate A object oriented SIP library, written in C++. Spin-off of the VOCAL project.
* oSIP An ANSI C library, leaves control to the application.
OPAL
* Phones (e.g. embedded);
* Softphones (any platform);
* Gateways;
* Proxies;
* B2buas, or;
* IM / Presence Servers or Clients.
* PurpleComm ( www.purplecomm.com)
o SipDragon: Proxy, Registrar, Voicemail, Presence Server
o Windows Softphone ( http://meet2talk.com)
* Jasomi Networks ( www.jasomi.com)
o PeerPoint * CSP - Italy ( www.csp.it)
o IM/Audio/Video UA for Windows
o Conference Server and h.323 gateway in development
* Computer Talk Technology ( www.computer-talk.com)
o Evaluating use of resiprocate for Contact Center product
* linphone - a linux softphone
* partysip - SIP proxy/registrar/redirect server
* siproxd - simple linux SIP proxy
從最後的comparision看來,他是推薦osip: 又小,功能又齊,u又os independent.