當前位置:首頁 » 文件管理 » qtftp暫停恢復

qtftp暫停恢復

發布時間: 2022-07-16 15:33:59

A. 安裝QT環境遇到這種情況怎麼破

Centos6.3自身是帶QT4.6.2的,在裝系統時可以選擇安裝,但是沒有qvfb工具,所以又自己重新編譯了qt-x11的4.5.0版本。

qt各版本版本下載地址(在網上找的很多博文里給的鏈接都失效了,下面這個鏈接貌似還比較新,現在可以用):
http://qt-project.org/downloads
ftp://ftp.qt-project.org/qt/source/
在ftp資源里找到 qt-x11-opensource-src-4.5.0、qt-embedded-linux-opensource-src-4.5.0這兩個源碼包並下載(tar.gz或tar.bz2包都有,網速不好的話看哪個小下載哪個)。

下載後將兩個源碼包分別解壓,qt-x11-opensource-src-4.5.0解壓一份,qt-embedded-linux- opensource-src-4.5.0解壓兩份,分別命名為qt-embedded-linux-opensource-src-4.5.0-x86 和 qt-embedded-linux-opensource-src-4.5.0-arm 。

開始編譯安裝:

一、X11編譯:
1.進入qt-x11-opensource-src-4.5.0源碼目錄。

./configure -no-openssl
在我這里必須加上-no-openssl選項,否則在make過程中,編譯到ssl時會報錯。出錯信息為:
ssl/qsslsocket_openssl_symbols_p.h:264: error: variable or field 『q_sk_free』 declared void
ssl/qsslsocket_openssl_symbols_p.h:264: error: 『STACK』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:264: error: 『a』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:265: error: 『STACK』 was not declared in this scope
ssl/qsslsocket_openssl_symbols_p.h:265: error: 『a』 was not declared in this scope
……
……

默認安裝路徑為 /usr/local/Trolltech/Qt-4.5.0。可用--prefix 指定其他安裝路徑。

2. gmake # linux下一般可直接用make代替gmake。如果要加快編譯速度,就加上 -jx ,x表示最大的線程數。

3. gmake install

二、qt-embedded-x86編譯:

1.進入qt-embedded-linux-opensource-src-4.5.0-x86源碼目錄。
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-x86 -embedded x86 -no-openssl -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
先後配置了安裝目錄、嵌入式架構(x86)。同時也跟X11版本一樣,配置了 -no-openssl,沒有這一項的話,make的過程中會出現跟編譯X11時一樣的錯誤。再後面的幾項是為了更好的配合qvfb,網上說如果沒有這幾 項,安裝好qt-embedded-x86後想在qvfb上調試程序時,會出現類似下面的錯誤:
Error opening buffer device /dev/fb0QScreenLinuxFb::connect: No such file or directory

2. gmake
跟x11版一樣
3. gamke install

三、qt-embedded-arm:
與前面兩個不同,在編譯arm版本的qt-embedded前,必須確認已經安裝了交叉工具鏈,編譯過程中要生成許多arm架構的庫,所以必須有 arm-linux-gcc、arm-linux-g++等工具。我用的是友善提供的arm-linux-gcc-4.5.1版本。
1. 進入qt-embedded-linux-opensource-src-4.5.0-arm源碼目錄。
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.5.0-arm -embedded arm -no-openssl -qt-libpng
指定了安裝路徑、嵌入式架構。同時也跟X11版本一樣,配置了 -no-openssl,沒有這一項的話,make的過程中會出現跟編譯X11時一樣的錯誤。
另外,還增加了一項, -qt-libpng,這個選項應該是關於png相關的庫,指定用qt自帶的png庫。如果沒有這一項,我這里會出現如下錯誤:
image/qpnghandler.cpp: In member function 'virtual QVariant QPngHandler::option(QImageIOHandler::ImageOption) const':
image/qpnghandler.cpp:950:35: warning: 'png_info_struct::width' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:639)
image/qpnghandler.cpp:950:35: warning: 'png_info_struct::width' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:639)
image/qpnghandler.cpp:950:55: warning: 'png_info_struct::height' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:640)
image/qpnghandler.cpp:950:55: warning: 'png_info_struct::height' is deprecated (declared at /opt/FriendlyARM/toolschain/4.5.1/lib/gcc/arm-none-linux-gnueabi/4.5.1/../../../../arm-none-linux-gnueabi/include/png.h:640)
make[1]: *** [.obj/release-shared-emb-arm/qpnghandler.o] 錯誤 1
make[1]: *** 正在等待未完成的任務....
make[1]: Leaving directory `/root/qt4.5.0/qt-embedded-linux-opensource-src-4.5.0-arm/src/gui'
make: *** [sub-gui-make_default-ordered] 錯誤 2

看起來像是我的交叉工具鏈跟這個QT版本匹配的不太好,Qt好像不太兼容交叉工具鏈的png.h頭文件中定義的數據結構。加上 -qt-libpng 可解決此問題。

四、qvfb:
這時QT就已安裝成功。但是還需要額外安裝qvfb。
進入qt-x11-opensource-src-4.5.0源碼包目錄,然後
cd tools/qvfb
在qvfb源碼目錄下運行 make 會在qt-x11-opensource-src-4.5.0/bin下生成qvfb,我們將它至/usr/local/Trolltech/QtEmbedded-4.5.0-x86/bin下即可。

end:
到這里,QT的開發環境基本就搭建好了,利用 qt-embedded-x86 和 qvfb 工具可以很方便的調試QT程序,調試好的程序再經 qt-embedded-arm 編譯就可在開發板上運行(還有個小問題,我現在編譯好的QT程序雖然可以在開發板上運行,但是運行時觸摸屏不能用,只能用USB滑鼠控制,想支持觸摸屏貌 似還需要移植tslib庫,等我折騰完了再回來把相關內容補充上)。

B. 在Qt中利用http下載時,如何實現暫停和續傳功能

reply.readall()
reply.read(...);
下載的時候每次記錄下載到哪兒

C. Qt中如何用按鈕來控制for循環,使其暫停、繼續

可以用信號機制來完成,按鈕負責給相應的進程發信號,而進程中的信號處理函數負責處理信號,遇到「暫停」信號就使進程sleep,遇到「繼續」信號,就喚醒進程。

D. 用Qt Phonon開發音樂播放器,怎麼讓其暫停後重新開始播放的時候從暫停的地方開始播放

pause()暫停方法,暫停的時候是記住了當前位置的 然後直接play()應該就是從剛才停止的地方直接開始啊 不會從頭來的吧

E. 請教Qt5下qtftp的編譯問題

1. 確保PATH環境變數設置正確。 2. 1正確的話,試著執行一下C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat文件 詳細看這里:http://social.msdn.microsoft.com/Forums/en-US/vssetup/thread/3312be98-cf2b-4907-af89-d..

F. 如何用Qt寫一個同一時間只能運行一個實例的應用程序

為了使一個應用程序在同一時間只運行一個實例,需要用某種方法在程序啟動時,檢測是否已有正在運行的實例,如果有,則將本次啟動的參數傳遞給前一個實例(例如需要打開的文檔的路徑),如果沒有,則正常啟動。
實現的方法有多種:
1. 用Windows API創建一個互斥量:
#include <windows.h>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

HANDLE hMutex = CreateMutex(NULL, TRUE, L"YourApp"); // 創建一個互斥量來保證只運行一個實例
if(hMutex != NULL)
{
if(GetLastError() == ERROR_ALREADY_EXISTS)
{
QMessageBox::critical(qApp->activeWindow(), QObject::tr("An instance of this application has been run!"), QObject::tr("Only one instance can be run at a time!"));
return 1;
}
}

... // 以下是正常啟動代碼
}
註:如果保險起見,CreateMutex()中的字元串應該用一個GUID來保證其唯一性,Visual Studio中有一個生成GUID的工具,菜單「工具」->「創建GUID」,選擇合適的定義形式,創建並拷貝到剪貼板即可。

此方法的缺點:1.使用了Windows API,不能跨平台;2.不能自動激活前一個實例的窗口。
2. 每次啟動時用Windows API枚舉進程,同時在第一次運行時用SetProp()函數給當前窗口設置屬性,這樣下次啟動時,在枚舉的進程中查找具有這個屬性的窗口,若找到,說明已有實例在運行,將該實例的窗口激活;若未找到則正常啟動。
此方法客服了前一方法的第2個缺點,但過於依賴Windows API函數(似乎還是MFC函數,對Qt程序好像不可行)。有興趣的可以照這個鏈接里的代碼試試
3. 利用QLocalSocket和QLocalServer,基本的思路是:
應用程序啟動時首先嘗試去連接一個QLocalServer,如果連接失敗,說明自己是第一個實例,於是創建這么一個QLocalServer,否則將啟動參數發送給QLocalServer然後退出。第一個實例的QLocalServer在收到後面啟動的實例發來的參數時可以進行處理(例如激活第一個實例的窗口)。這個鏈接里有詳細的示例代碼供參考。
註:使用QLocalSocket和QLocalServer時,需要把QtNetwork庫包含在項目文件中;
4. 用Qt Solutions里提供的QtSingleApplication類(最簡單的方法,推薦)
從ftp://ftp.qt.nokia.com/qt/solutions/lgpl/ 下載QtSingleApplication的源碼包,解壓縮後按照INSTALL.TXT里的說明進行配置和編譯,我選擇編譯成動態庫,這樣下次再用,只需引用頭文件和lib文件即可,比較方便。
用法很簡單,只需把原來main()里的QApplication對象換成QtSingleApplication對象,調用一下isRunning()方法進行判斷即可。
// 原來的代碼
int main(int argc, char **argv)
{
QApplication app(argc, argv);

MyMainWidget mmw;

mmw.show();
return app.exec();
}

// 修改後的代碼
int main(int argc, char **argv)
{
QtSingleApplication app(argc, argv);

if (app.isRunning())
return 0;

MyMainWidget mmw;
mmw.show();
return app.exec();
}
注1:QtSingleApplication的實現方法基本上也是利用QLocalServer和QLocalSocket,所以同樣依賴於QtNetwork庫;
注2:以上代碼只展示了QtSingleApplication最簡單的用法,這個類還有更多用法,請參考源碼包中帶的範例和文檔。
QtSingleApplication的幾種用法(直接使用源碼,編譯成動態庫等)可以參考這個鏈接:Qt程序只運行一個實例

G. qt中連接到ftp伺服器上後怎麼獲取服務下所有的文件名

操作方法如下:
@echo off

set h=192.168.1.100
set u=ftpuser
set p=12345678
echo open %h%>ftp.txt
echo %u%>>ftp.txt
echo %p%>>ftp.txt
echo dir>>ftp.txt
echo bye>>ftp.txt
ftp -s:ftp.txt>ftpdir.txt
echo open %h%>ftp.txt
echo %u%>>ftp.txt
echo %p%>>ftp.txt
for /f "tokens=4" %%i in ('findstr "<DIR>" ftpdir.txt') do (
echo cd %%~i>>ftp.txt
echo dir>>ftp.txt
echo cd ..>>ftp.txt)
echo bye>>ftp.txt
ftp -s:ftp.txt>ftpfile.txt
notepad ftpfile.txt

H. qt調用ftp cmd

qt調用ftpcmd的方法如下。
QProcess::start()接受兩個參數。
第一個是要執行的命令或者程序,這里就是notepad.exe。
第二個是一個QStringList類型的數據,也就是需要傳遞給這個程序的運行參數。注意,這個程序是需要能夠由系統找到的,一般是完全路徑。
QtCreator是一個用於Qt開發的輕量級跨平台集成開發環境。QtCreator可帶來兩大關鍵益處:提供首個專為支持跨平台開發而設計的集成開發環境(IDE),並確保首次接觸Qt框架的開發人員能迅速上手和操作。即使不開發Qt應用程序,QtCreator也是一個簡單易用且功能強大的IDE。

熱點內容
如何把舊安卓機改造為游戲機 發布:2025-01-22 19:54:35 瀏覽:623
加拿大訪問學者簽證 發布:2025-01-22 19:50:57 瀏覽:364
war反編譯工具 發布:2025-01-22 19:41:30 瀏覽:291
奧創熊少兒編程 發布:2025-01-22 19:41:23 瀏覽:269
Qt用ftp傳文件 發布:2025-01-22 19:23:28 瀏覽:731
校園卡密碼是什麼 發布:2025-01-22 19:14:43 瀏覽:658
內存大小的存儲 發布:2025-01-22 18:58:17 瀏覽:393
tampermonkey腳本 發布:2025-01-22 18:53:17 瀏覽:117
windows7共享文件夾 發布:2025-01-22 18:53:17 瀏覽:479
如何調節安卓手機的內存 發布:2025-01-22 18:49:30 瀏覽:639