Qt-Applikation ruckelt
Verfasst: 25. Juli 2012 15:19
Hallo,
wie schon in der Überschrift erwähnt, läuft mein Qt-Programm ruckelig bei der Ausführung.
In meinem Programm lasse ich mir über TCP-Sockets jede Sekunde ein Bild schicken, damit es auf der empfangenden Seite in einem QLabel angezeigt werden kann.
Das Bild wird als PNG gespeichert.
Führe ich das Programm unter Windows aus und lasse mir die BIlder senden, ruckelt das Fenster wenn ich es verschieben möchte und auch Tastatureingaben verzögern sich.
Unter Linux tritt dieses Problem nicht auf.
Neue Daten nehme ich so entgegen:
Vielen Dank für die Hilfe!
wie schon in der Überschrift erwähnt, läuft mein Qt-Programm ruckelig bei der Ausführung.
In meinem Programm lasse ich mir über TCP-Sockets jede Sekunde ein Bild schicken, damit es auf der empfangenden Seite in einem QLabel angezeigt werden kann.
Das Bild wird als PNG gespeichert.
Führe ich das Programm unter Windows aus und lasse mir die BIlder senden, ruckelt das Fenster wenn ich es verschieben möchte und auch Tastatureingaben verzögern sich.
Unter Linux tritt dieses Problem nicht auf.
Neue Daten nehme ich so entgegen:
Code: Alles auswählen
void Action::handleNewData()
{
if(this->m_sizeToRead == -1)
{
if(this->m_client->getClientSocket()->bytesAvailable() >= (qint64)sizeof(qint64))
{
this->m_sizeToRead = (*(qint64*)this->m_client->getClientSocket()->read(sizeof(qint64)).data());
}
else
{
return;
}
}
if(this->m_headerBuffer.size() == 0)
{
if(this->m_client->getClientSocket()->bytesAvailable() >= 6)
{
this->m_headerBuffer += this->m_client->getClientSocket()->read(6);
}
else
{
return;
}
}
qint64 residual = this->m_sizeToRead - this->m_readBuffer.size();
this->m_readBuffer += this->m_client->getClientSocket()->read(residual);
if(this->m_readBuffer.size() == this->m_sizeToRead)
{
Data* newData = new Data();
newData->setHeader(this->m_headerBuffer);
newData->setDataBuffer(this->m_readBuffer);
this->m_readDataStorage.push_back(newData);
this->m_sizeToRead = -1;
this->m_readBuffer.clear();
this->m_headerBuffer.clear();
emit this->newData(newData);
emit this->hasNewData(this->m_client);
}
}