我想读取一个50MB的文件并通过tcp发送.该文件仅包含浮点数.首先我创建了一个Mainwindow,女巫读取一行并将其发送到服务器,但gui被冻结了.所以我创建了一个依赖于QThread的类,叫做QSendThread.这是QThread类的代码:
#ifndef QSENDTHREAD_H
#define QSENDTHREAD_H
#include <QThread>
#include <QLabel>
#include <QFile>
#include <QMessageBox>
#include <QtNetwork/QTcpSocket>
#include <QtNetwork/QHostAddress>
class QSendThread : public QThread
{
Q_OBJECT
public:
QSendThread(QTcpSocket* qtcpso, QLabel* qlbl, QFile* qfiel, QObject *parent = NULL);
~QSendThread();
protected:
void run(void);
private:
QTcpSocket* qtcpsoDest;
QLabel* qlblRef;
QFile* qfileRef;
signals:
void error(QString qstrError);
};
#endif // QSENDTHREAD_H
#include "qsendthread.h"
QSendThread::QSendThread(QTcpSocket* qtcpso, QLabel* qlbl, QFile* qfile, QObject *parent)
: QThread(parent)
{
qtcpsoDest = qtcpso;
qlblRef = qlbl;
qfileRef = qfile;
}
QSendThread::~QSendThread()
{
} …Run Code Online (Sandbox Code Playgroud) 在班级学院,我有一套科目.我想通过这个集合,并在每个主题上调用一个函数,将学生添加到这个主题.这是我的功能看起来如何.
void Faculty::addStudent(Student* n) {
this->Students.insert(n);
set<Subject*>::iterator it;
for(it = this->Subjects.begin(); it != this->Subjects.end(); it++) {
(*it)->addStudent(n);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是我收到一个错误:
Unhandled exception at 0x01341c6d in University.exe: 0xC0000005: Access violation reading location 0x1000694d.
Run Code Online (Sandbox Code Playgroud)
我正在使用Micorosft Visual 2010.
我是C++的新手.
我可以提供任何其他必要的信息,只是不知道哪些.请告诉我是否需要.
class Student: public Human {
friend class University;
friend class Faculty;
friend class Subject;
public:
Student(string name, string surname);
~Student();
void Index(int n);
private:
int index;
};
Run Code Online (Sandbox Code Playgroud) 我的主窗口具有以下绘图功能:
void MainWindow::paintEvent(QPaintEvent*)
{
QImage sign(50, 50, QImage::Format_ARGB32_Premultiplied);
QPainter p(&sign);
p.setRenderHint(QPainter::Antialiasing, true);
p.fillRect(sign.rect(), QColor(255, 255, 255, 0));
p.setBrush(Qt::blue);
p.setPen(Qt::NoPen);
p.drawEllipse(0, 0, sign.width(), sign.height());
p.end();
QPainter painter(this);
painter.drawImage(rect(), sign, sign.rect());
}
Run Code Online (Sandbox Code Playgroud)
所以基本上,它会在 QImage 上绘制一个蓝色填充圆圈,然后将该 QImage 绘制到小部件上。然而,当我调整窗口大小时,我得到了奇怪的人工制品(在左上角)。它看起来是这样的:
原来的:

更改窗口大小后:

有谁知道这是为什么?
(我正在 Ubuntu 10.04 下工作,如果你感兴趣的话)
当我尝试比较Qt中的两个整数时出错.
if ((modus==2) & (move != -1))
error: invalid operands of types '<unresolved overloaded function type>' and 'int' to binary 'operator!='
Run Code Online (Sandbox Code Playgroud)
我需要其他运营商吗?我用谷歌搜索,但似乎Qt使用相同的.谢谢你的激光