想請問傳輸圖片的問題

喜歡程式設計嗎?想要一窺 KDE/Qt 程式設計的奧秘嗎?想要
學習 X Window 上的視窗程式設計嗎?歡迎各類關於 KDE/Qt、Qtopia、Qt/Embedded、QSA、PyQt 等各類心得討論。

版主: AceLan, Franklin

想請問傳輸圖片的問題

文章muddy » 週四 11月 30, 2006 6:09 pm

我根據範例的fortune server及client修改
透過 DataStream 傳送資料
可是不知道為什麼可以傳 QString 得資料
可是傳不了 QPixmap的資料
有人可以告訴我嗎?
muddy
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週三 10月 25, 2006 3:24 pm

文章cavendish » 週一 12月 04, 2006 1:48 am

应该可以吧

http://doc.trolltech.com/4.2/qpixmap.ht ... r-lt-lt-69

你跟踪一下QPixmap流入QDataStream后的二进制数据
以及从QDataStream流出到QPixmap是否正确
先本机流入流出试试
cavendish
可愛的小學生
可愛的小學生
 
文章: 51
註冊時間: 週三 3月 31, 2004 6:55 pm

文章70630515 » 週五 12月 08, 2006 11:42 am

source code可以貼出來看看嗎
我不自私,因為我開放(Open) , 我很快樂,因為我分享(Share)–Open Source
頭像
70630515
懵懂的國中生
懵懂的國中生
 
文章: 160
註冊時間: 週一 3月 13, 2006 9:15 am
來自: 北鼻存錢筒

文章muddy » 週一 12月 11, 2006 4:37 pm

Server

void Open()
{
FileName = QFileDialog::getOpenFileName(this,tr("Open File"),"/",tr("Image(*.png *.jpg *.bmp)"));
pixmap.load(FileName);

MyServer = new QTcpServer(this);
MyServer->listen(QHostAddress::LocalHost,12345);
connect(MyServer, SIGNAL(newConnection()), this, SLOT(SendData()));
}

void SendData()
{
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_0);
out << FileName;
out << pixmap;
QTcpSocket *clientConnection = MyServer->nextPendingConnection();
connect(clientConnection, SIGNAL(disconnected()),clientConnection, SLOT(deleteLater()));
clientConnection->write(block);
clientConnection->disconnectFromHost();
MyServer->close();
}

Client

void Connect()
{
MySocket = new QTcpSocket(this);
MySocket->connectToHost(QHostAddress::LocalHost,12345,QIODevice::ReadOnly);

connect(MySocket, SIGNAL(readyRead()), this,SLOT(ReadData()));
}

void ReadData()
{
QDataStream in(MySocket);
in.setVersion(QDataStream::Qt_4_0);

in >> FileName;
in >> pixmap;
}
muddy
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週三 10月 25, 2006 3:24 pm

文章cavendish » 週二 12月 12, 2006 5:34 pm

网络上的tcp流和本机二进制流是不同的
本机二进制流可以看作是一次到位的
网络的可能这个文件(你的图象)
可能会分几部分到位的

也就是说会有几次调用你的ReadData()槽的情况
自己需要加一些长度判断
和缓存处理
cavendish
可愛的小學生
可愛的小學生
 
文章: 51
註冊時間: 週三 3月 31, 2004 6:55 pm

文章muddy » 週二 12月 12, 2006 7:54 pm

cavendish 寫:网络上的tcp流和本机二进制流是不同的
本机二进制流可以看作是一次到位的
网络的可能这个文件(你的图象)
可能会分几部分到位的

也就是说会有几次调用你的ReadData()槽的情况
自己需要加一些长度判断
和缓存处理


請問應該要怎麼做勒?
不知道要從哪邊著手
muddy
可愛的小學生
可愛的小學生
 
文章: 5
註冊時間: 週三 10月 25, 2006 3:24 pm

文章cavendish » 週四 12月 14, 2006 6:07 pm

建议你看看
C++ GUI Programming with Qt 3
第13章 Networking
第3节 TCP Networking with QSocket

C++ GUI Programming with Qt 4也有类似的章节

qt的例子里面肯定也有的
cavendish
可愛的小學生
可愛的小學生
 
文章: 51
註冊時間: 週三 3月 31, 2004 6:55 pm


回到 KDE/Qt 程式設計

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客