小编Tob*_*ias的帖子

将QList <int>保存到QSettings

我想保存一个QList<int>到我的QSettings而不循环它.
我知道我可以使用writeArray()和循环来保存所有项目或将QList写入QByteArray并保存它但是它在我的INI文件中不是人类可读的..

目前我正在使用以下内容将我转换QList<int>QList<QVariant>:

QList<QVariant> variantList;
//Temp is the QList<int>
for (int i = 0; i < temp.size(); i++)
  variantList.append(temp.at(i));
Run Code Online (Sandbox Code Playgroud)

要将其保存QList<Variant>到我的设置,我使用以下代码:

QVariant list;
list.setValue(variantList);
//saveSession is my QSettings object
saveSession.setValue("MyList", list);
Run Code Online (Sandbox Code Playgroud)

正如我所看到的那样,QList正确保存到我的INI文件中(我的整数的逗号分隔列表)
但该函数在退出时崩溃.
我已经尝试使用指向我的QSettings对象的指针,但是在删除指针时它会崩溃.

qt qlist

13
推荐指数
1
解决办法
2万
查看次数

将数据写入自己的线程中的TcpSocket

我的线程TCP-Server出了问题.
我可以打开我的服务器,创建一个新的Socket,我可以通过套接字接收数据(我使用了readyRead()信号然后使用readLine()来读取,这工作正常.现在我想把数据写入这个Socket从另一个线程,所以我创建了一个公共插槽writeData(),它应该处理这个.我连接writeData()插槽与QueuedConnection(也试过自动连接)但我得到的所有,当我调用m_socket-> write()是一个错误信息:

QObject:无法为位于不同线程中的父级创建子级.(Parent是QNativeSocketEngine(0x12f0f70),父线程是ServerThread(0xfbbae8),当前线程是QThread(0xfa7c48)

这里只是一个最小的例子:
我省略了从我的其他线程到writeData()槽的连接,因为我认为每个人都可以想象;)

class Server : public QTcpServer {
  Server();
protected:
  void incomingConnection(int socketDesc);
}

Server::Server() : QTcpServer() {
  this->listen(QHostAddress::Any, PORT);
}

void Server::incomingConnection(int socketDescriptor) {
  ServerThread *t = new ServerThread(socketDescriptor);
  t->start();
}

class ServerThread : public QThread {
  ServerThread(int socketDescriptor);
protected:
  void run();
public slots:
  void writeData(QString data);
private:
  int m_socketDescriptor;
  QTcpSocket *m_socket;
}

ServerThread::ServerThread(int socketDescriptor) : QThread(), m_socketDescriptor(socketDescriptor) {}

void ServerThread::run() {
  m_socket = new QTcpSocket();
  m_socket->setSocketDescriptor(m_socketDescriptor);
  exec();
}

void ServerThread::writeData(QString data) {
  m_socket->write(data.toAscii());
} …
Run Code Online (Sandbox Code Playgroud)

qt multithreading tcp

4
推荐指数
1
解决办法
6577
查看次数

标签 统计

qt ×2

multithreading ×1

qlist ×1

tcp ×1