燕麗紅+林志雄+楊星
摘要: Qt是一個跨平臺的C++圖形用戶界面庫,由挪威的TrollTech公司開發(fā),能提供用于用戶應用開發(fā)的圖形界面及豐富的圖形庫。基于Windows 7操作系統(tǒng),采用嵌入式Qt技術,C++語言進行模塊化編程,設計了一款智能化的電子相冊。該相冊具有圖片加載、瀏覽、旋轉、放大與縮小、循環(huán)播放等基本功能。測試結果表明該設計具有人性化,操作簡單等特點。
關鍵詞: Qt; Windows 7操作系統(tǒng); 模塊化編程; 電子相冊
中圖分類號: TN911?34; TP273文獻標識碼: A文章編號: 1004?373X(2014)08?0030?02
Design of electronic photo album based on Windows 7 operating system and QT
YAN Li?hong1, LIN Zhi?xiong2, YANG Xing3
(1. Information Engineering College , Xian Eurasia Univisity, Xian , 710065, China;
2. Department of Electronics and Information Engineering, Putian University, Fujian, 351100, China;
3. Xian South Electronic Technology Co., Ltd, Xian, 710068, China )
Abstract: With the development of embedded technology, humanization and intelligent consumer electronics become more and more popular in people′s life. Qt provided by TrollTech Corporation in Norway is a cross?platform graphical user interface library of C++, which can provide visual graphic interface and rich graphics library for application program developers. An intelligent electronic photo album was designed by using Windows 7 operating system, QT embedded technology and modularization programming with C++ language. The electronic album has the basic functions of photo loading, browse, amplification, reduction, loop playback and so on. The testing result shows that the album has and is convenient to operate.
Keywords: QT; Windows 7 operating system; modularization programming; electronic albu
隨著電子電路集成化和計算機技術的快速發(fā)展,航空、醫(yī)療、消費電子、汽車電子等眾多領域對嵌入式技術應用越來越廣泛。而作為消費電子領域的產(chǎn)品電子相冊具有圖、文、聲、像并茂的表現(xiàn)手法,隨意修改編輯的功能,快速的檢索方式,永不褪色的恒久保存特性,以及廉價復制分發(fā)等傳統(tǒng)相冊無法比擬的優(yōu)越性,現(xiàn)在已得到現(xiàn)代人的青睞[1?4]。因此,采用嵌入式技術,通過人機交互界面的建立進行電子相冊設計就顯得很有十分必要。
1Qt開發(fā)環(huán)境分析
Qt是一個跨平臺的C++圖形用戶界面庫[5?8]。由挪威的TrollTech公司開發(fā),目前已被Nokia收購。Qt的主要特點有:面向對象,很容易擴展,且允許真正的組件編程;Qt對各個模塊進行了良好的封裝,使各模塊可重用性較好;優(yōu)良的跨平臺特性,使用Qt類編寫的程序可以實現(xiàn) “一次編碼,到處編譯”,極大的降低了跨平臺開發(fā)的難度(丁丁等,2004);持Windows,Linux,Solaris,SunOS,F(xiàn)reeBSD,BSD/OS,SCO,AIX,OS390,QNX 等操作系統(tǒng),面向對象很容易擴展。Qt提供了一種稱為 signals/slots?的安全類型來替代callback,具有良好的封裝機制,可重用性較好。同時包含近700API類庫,允許真正的組件編程,是一種開源軟件,使用起來簡便且高效,具有良好的可移植性,目前主流的具有移植性的GUI API開發(fā)包有miniGUI,Qt,OpenGUI。在Qt的應用程序中,首先要進行初始化設置,即首先是創(chuàng)建QApplication對象,QApplication類是負責圖形用戶界面的應用程序的控制流和主設置。Qt軟件用戶界面如圖1所示。
int main( int argc, char **argv )
{
QApplication app( argc,argv );
......}
圖1 Qt軟件用戶界面
2基于Qt的電子相冊的設計
本文基于Windows 7操作系統(tǒng),采用Qt技術,利用C++語言[9?11]進行模塊化編程,設計了一款電子相冊,具有瀏覽、旋轉、圖片切換以及放大縮小等功能,該電子相冊還支持jpg,png,gif和bmp等格式圖片的瀏覽。見圖2。
圖2 電子相冊功能結構圖
2.1電子相冊的界面設計
本設計的電子相冊界面大小設定為1 024×500,界面的左側顯示圖片文件名列表(當前瀏覽圖片名為藍色),寬度為200,右側為圖片顯示區(qū)域,圖片顯示區(qū)域的下方為圖片放大/縮小滑動條。該相冊界面具有OPEN(打開圖片文件)、ZOOMIN(縮小圖片)、ZOOMOUT(放大圖片)、LOOP(幻燈片循環(huán)模式顯示)、PAUSE(暫停)和QUIT(一鍵退出)等功能按鈕,界面如圖3所示。
相冊界面大小的設定程序代碼如下:
Window::Window()
{
setFixedSize( 1024,500 );
QSplitter *splitter = new QSplitter(Qt::Horizontal);
listwidget = new QListWidget();
listwidget?>setFixedWidth(200);
......
}
2.2圖片顯示功能設計
進入電子相冊界面后,通過界面左側的顯示可以打開計算機存儲圖片所在的文件夾,將從當前目錄下掃描xpm,jpg,png,gif格式的圖片并將其名稱存入文件夾中,通過load函數(shù)來加載圖片到一個QImage類型變量中,然后將此變量和Label關聯(lián)起來,最終在Label上顯示實現(xiàn)的圖片。打開圖片的部分代碼如下:
void Photo::load(QString filename) //打開圖片
{
pixmap.load(filename);
m_rect = rect();
update();
}
圖3 電子相冊界面設計
2.3圖片放大與縮小功能的設計
本設計可以在任意狀態(tài)下對圖片進行縮小,同時能保證縮小的圖片還位居相冊的中間位置,在圖片非全屏模式與全屏模式兩種情況下都可以。圖片放大的部分程序代碼:
void Photo::zoomin() {
m_rect.setWidth(m_rect.width() ? m_rect.width()/100);
m_rect.setX((rect().width() ? m_rect.width()) / 2);
m_rect.setHeight(m_rect.height() ? m_rect.height()/100);
m_rect.setY((rect().height() ? m_rect.height()) / 2);
m_slider?>setValue(m_slider?>value()?1);
update();}
2.4循環(huán)顯示圖片功能設計
通過循環(huán)模式播放選中的圖片,可以使用戶很方便地進行照片的選擇,節(jié)約時間。本設計通過下列代碼實現(xiàn)了幻燈片循環(huán)播放的功能:
loop = new QAction(Qicon
(":/images/loop.png"),"loop", this); //幻燈片循環(huán)
loop?>setEnabled(false);
connect(loop, SIGNAL(triggered()), this, SLOT(slotStart()));
QAction *stoploop = new QAction(QIcon(":/images/stop.png"), "pause", this);
connect(stoploop, SIGNAL(triggered()), this, SLOT(slotstop()));
3結語
嵌入式技術的快速發(fā)展,使得嵌入式產(chǎn)品已深入人們生活,電子相冊的出現(xiàn)打破了傳統(tǒng)相冊不易保存、瀏覽等問題。本文采用嵌入式Qt技術,C++語言編程設計了一款電子相冊,可以實現(xiàn)圖片加載、瀏覽、放大與縮小等基本功能。該設計方案具有低耦合、高內聚、可擴展、操作簡單等良好特點。下一步需要完善的是對圖片按要求裁剪、插入文字、加邊框等圖片編輯功能的設計。
參考文獻
[1] 袁媛,王延紅,江凌,等.基于Qt及OpenCASCADE的建模技術研究[J].現(xiàn)代電子技術,2013,36(10):74?77.
[2] 史桂紅.XML及GDI+在便攜式電子相冊中的應用[J].計算機系統(tǒng)應用,2013,22(3):161?165.
[3] 程博.基于嵌入式Qt的數(shù)字機頂盒圖形界面設計與實現(xiàn)[J].計算機應用,2009(11):45?46.
[4] 趙鵬.基于嵌入式Linux的MP3播放器的設計與實現(xiàn)[J].現(xiàn)代計算機,2011(3):111?112.
[5] 蔡志明.精通Qt4編程[M].2版.北京:電子工業(yè)出版社,2011.
[6] 李艷民.基于Qt跨平臺的人機交互界面的研究和應用[D].重慶:重慶大學,2007.
[7] 李亞鋒,歐文盛.嵌入式系統(tǒng)開發(fā)從入門到精通[M].北京:清華大學出版社,2007.
[8] 衰野,王宏遠.一種嵌入式系統(tǒng)中GUI的設計[J].計算機與數(shù)字工程,2006(1):9?11.
[9] 袁媛,王延紅,江凌,等.C++類庫Qt在數(shù)值模擬軟件開發(fā)中的應用[J].現(xiàn)代電子技術,2010,33(2):80?83.
[10] 譚浩強.C++面向對象程序設計[M].北京:清華大學出版社,2006.
[11] BLANCHETTE Jasmin, SUMMERFIELD Mark. C++ GUI Programming with Qt4 [M]. 2版.北京:電子工業(yè)出版社,2008.
void Photo::load(QString filename) //打開圖片
{
pixmap.load(filename);
m_rect = rect();
update();
}
圖3 電子相冊界面設計
2.3圖片放大與縮小功能的設計
本設計可以在任意狀態(tài)下對圖片進行縮小,同時能保證縮小的圖片還位居相冊的中間位置,在圖片非全屏模式與全屏模式兩種情況下都可以。圖片放大的部分程序代碼:
void Photo::zoomin() {
m_rect.setWidth(m_rect.width() ? m_rect.width()/100);
m_rect.setX((rect().width() ? m_rect.width()) / 2);
m_rect.setHeight(m_rect.height() ? m_rect.height()/100);
m_rect.setY((rect().height() ? m_rect.height()) / 2);
m_slider?>setValue(m_slider?>value()?1);
update();}
2.4循環(huán)顯示圖片功能設計
通過循環(huán)模式播放選中的圖片,可以使用戶很方便地進行照片的選擇,節(jié)約時間。本設計通過下列代碼實現(xiàn)了幻燈片循環(huán)播放的功能:
loop = new QAction(Qicon
(":/images/loop.png"),"loop", this); //幻燈片循環(huán)
loop?>setEnabled(false);
connect(loop, SIGNAL(triggered()), this, SLOT(slotStart()));
QAction *stoploop = new QAction(QIcon(":/images/stop.png"), "pause", this);
connect(stoploop, SIGNAL(triggered()), this, SLOT(slotstop()));
3結語
嵌入式技術的快速發(fā)展,使得嵌入式產(chǎn)品已深入人們生活,電子相冊的出現(xiàn)打破了傳統(tǒng)相冊不易保存、瀏覽等問題。本文采用嵌入式Qt技術,C++語言編程設計了一款電子相冊,可以實現(xiàn)圖片加載、瀏覽、放大與縮小等基本功能。該設計方案具有低耦合、高內聚、可擴展、操作簡單等良好特點。下一步需要完善的是對圖片按要求裁剪、插入文字、加邊框等圖片編輯功能的設計。
參考文獻
[1] 袁媛,王延紅,江凌,等.基于Qt及OpenCASCADE的建模技術研究[J].現(xiàn)代電子技術,2013,36(10):74?77.
[2] 史桂紅.XML及GDI+在便攜式電子相冊中的應用[J].計算機系統(tǒng)應用,2013,22(3):161?165.
[3] 程博.基于嵌入式Qt的數(shù)字機頂盒圖形界面設計與實現(xiàn)[J].計算機應用,2009(11):45?46.
[4] 趙鵬.基于嵌入式Linux的MP3播放器的設計與實現(xiàn)[J].現(xiàn)代計算機,2011(3):111?112.
[5] 蔡志明.精通Qt4編程[M].2版.北京:電子工業(yè)出版社,2011.
[6] 李艷民.基于Qt跨平臺的人機交互界面的研究和應用[D].重慶:重慶大學,2007.
[7] 李亞鋒,歐文盛.嵌入式系統(tǒng)開發(fā)從入門到精通[M].北京:清華大學出版社,2007.
[8] 衰野,王宏遠.一種嵌入式系統(tǒng)中GUI的設計[J].計算機與數(shù)字工程,2006(1):9?11.
[9] 袁媛,王延紅,江凌,等.C++類庫Qt在數(shù)值模擬軟件開發(fā)中的應用[J].現(xiàn)代電子技術,2010,33(2):80?83.
[10] 譚浩強.C++面向對象程序設計[M].北京:清華大學出版社,2006.
[11] BLANCHETTE Jasmin, SUMMERFIELD Mark. C++ GUI Programming with Qt4 [M]. 2版.北京:電子工業(yè)出版社,2008.
void Photo::load(QString filename) //打開圖片
{
pixmap.load(filename);
m_rect = rect();
update();
}
圖3 電子相冊界面設計
2.3圖片放大與縮小功能的設計
本設計可以在任意狀態(tài)下對圖片進行縮小,同時能保證縮小的圖片還位居相冊的中間位置,在圖片非全屏模式與全屏模式兩種情況下都可以。圖片放大的部分程序代碼:
void Photo::zoomin() {
m_rect.setWidth(m_rect.width() ? m_rect.width()/100);
m_rect.setX((rect().width() ? m_rect.width()) / 2);
m_rect.setHeight(m_rect.height() ? m_rect.height()/100);
m_rect.setY((rect().height() ? m_rect.height()) / 2);
m_slider?>setValue(m_slider?>value()?1);
update();}
2.4循環(huán)顯示圖片功能設計
通過循環(huán)模式播放選中的圖片,可以使用戶很方便地進行照片的選擇,節(jié)約時間。本設計通過下列代碼實現(xiàn)了幻燈片循環(huán)播放的功能:
loop = new QAction(Qicon
(":/images/loop.png"),"loop", this); //幻燈片循環(huán)
loop?>setEnabled(false);
connect(loop, SIGNAL(triggered()), this, SLOT(slotStart()));
QAction *stoploop = new QAction(QIcon(":/images/stop.png"), "pause", this);
connect(stoploop, SIGNAL(triggered()), this, SLOT(slotstop()));
3結語
嵌入式技術的快速發(fā)展,使得嵌入式產(chǎn)品已深入人們生活,電子相冊的出現(xiàn)打破了傳統(tǒng)相冊不易保存、瀏覽等問題。本文采用嵌入式Qt技術,C++語言編程設計了一款電子相冊,可以實現(xiàn)圖片加載、瀏覽、放大與縮小等基本功能。該設計方案具有低耦合、高內聚、可擴展、操作簡單等良好特點。下一步需要完善的是對圖片按要求裁剪、插入文字、加邊框等圖片編輯功能的設計。
參考文獻
[1] 袁媛,王延紅,江凌,等.基于Qt及OpenCASCADE的建模技術研究[J].現(xiàn)代電子技術,2013,36(10):74?77.
[2] 史桂紅.XML及GDI+在便攜式電子相冊中的應用[J].計算機系統(tǒng)應用,2013,22(3):161?165.
[3] 程博.基于嵌入式Qt的數(shù)字機頂盒圖形界面設計與實現(xiàn)[J].計算機應用,2009(11):45?46.
[4] 趙鵬.基于嵌入式Linux的MP3播放器的設計與實現(xiàn)[J].現(xiàn)代計算機,2011(3):111?112.
[5] 蔡志明.精通Qt4編程[M].2版.北京:電子工業(yè)出版社,2011.
[6] 李艷民.基于Qt跨平臺的人機交互界面的研究和應用[D].重慶:重慶大學,2007.
[7] 李亞鋒,歐文盛.嵌入式系統(tǒng)開發(fā)從入門到精通[M].北京:清華大學出版社,2007.
[8] 衰野,王宏遠.一種嵌入式系統(tǒng)中GUI的設計[J].計算機與數(shù)字工程,2006(1):9?11.
[9] 袁媛,王延紅,江凌,等.C++類庫Qt在數(shù)值模擬軟件開發(fā)中的應用[J].現(xiàn)代電子技術,2010,33(2):80?83.
[10] 譚浩強.C++面向對象程序設計[M].北京:清華大學出版社,2006.
[11] BLANCHETTE Jasmin, SUMMERFIELD Mark. C++ GUI Programming with Qt4 [M]. 2版.北京:電子工業(yè)出版社,2008.