QT开发随笔

本文介绍了如何在QCustomPlot中启用OpenGL以利用GPU绘图,QDialog中自定义右上角按钮和窗口选项,以及如何处理自定义数据类型、使用预定义宏和调整Socket缓冲区。此外,还讲述了在Qt中使用MSVC2017编译和打包可执行程序的方法,以及GUI事件循环的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2023/09/12

1. QCustomPlot开启Opengl, 使用GPU绘图

  1. 在.pro文件中添加opengl模块
  2. 配置库文件
    在这里插入图片描述
  3. 开启OpenGL:
    在这里插入图片描述
    == 此时就可以用GPU画图了 ==

2023/09/14

1. QDialog的右上角的按钮设置

1 自定义右上角显示什么按钮
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowMinimizeButtonHint | Qt::WindowMaximizeButtonHint);

2. 使用qRegisterMetaType注册自定义数据类型的函数

例如: qRegisterMetaType<WB_NB_Thread>(“WB_NB_Thread”);
分析:

  • 目的 :是将一个名为 “WB_NB_Thread” 的自定义数据类型注册到 Qt 的元对象系统(Meta-Object System)中,以便在 Qt 的信号和槽机制中使用。
  • 具体来说:qRegisterMetaType 是一个模板函数,用于将自定义数据类型注册到 Qt 的元对象系统中,以使其能够在信号和槽连接中传递。
    <WB_NB_Thread> 是数据类型的模板参数,它指定了要注册的数据类型。在这里,它指定了一个名为 “WB_NB_Thread” 的数据类型。“WB_NB_Thread” 是数据类型的名称或标识符,用于在注册后在代码中引用该数据类型。
    注册自定义数据类型对于使用 Qt 的信号和槽机制非常重要,因为它允许您在不同线程之间传递自定义类型的数据,而不仅仅是内置的 Qt 类型。通过注册自定义类型,您可以确保 Qt 能够正确处理这些类型的信号和槽连接。在多线程应用程序中,这通常用于在线程之间传递自定义对象或数据。

3. c中预定义的宏

例如: qDebug()<<__LINE__<<__FILE__<<“Open database failed!!!”;
__LIN__ : 是一个预定义的宏,它会被替换为当前代码行的行号。
__FILE__ : 是一个预定义的宏,它会被替换为当前文件的文件名

4. 修改QT的项目文件名称

  1. 先修改项目文件夹的名称, 直接重命名 A->B
  2. 修改配置文件的名称: A.pro->B.pro
  3. 删除项目文件夹中的A.pro.user文件
  4. 完成上述文件的名称修改后,直接双击打开.pro文件就完成了!

2023/09/18

1. 更改Socket的网络缓冲区大小

  1. 查看socket缓冲区的大小

int bufferSizeSize = sizeof (bufferSize2);
if(getsockopt(clientSocket, SOL_SOCKET, SO_RCVBUF, (char*)&bufferSize2,&bufferSizeSize) == SOCKET_ERROR)
{
	qDebug() << "getsock error"; 	closesocket(clientSocket);
	WSACleanup();
  	continue;
}
qDebug() << "size = " << bufferSize;
  1. 设置socket缓冲区大小
 int bufferSize = 65536 * 100;
 if(setsockopt(clientSocket, SOL_SOCKET, SO_RCVBUF, (const char*)&bufferSize, sizeof (bufferSize)) == SOCKET_ERROR)
    {
        qDebug() << "setsocket error!!!";
        closesocket(clientSocket);
        WSACleanup();
        continue;
    }

2023/12/11

1. QT使用msvc2017编译并且打包成可执行程序

  1. 在QtCreator中使用release模式编译程序, 生成.exe文件
  2. 打开qt自带的qt msvc2017命令行
  3. 输入命令: windeployqt xxxx.exe即可完成打包

可执行程序所需要的dll可以通过软件proxp64查看

2023/12/12

1.

在 Qt 中,GUI 事件循环(QCoreApplication::exec() 或 QEventLoop)通常是运行在主线程中的。如果一个槽函数正在执行,而用户在 GUI 上点击按钮触发了一个信号,Qt 会将信号放入事件队列中,并等待当前的槽函数执行完成,然后再执行信号对应的槽函数。
在主线程中,Qt 使用事件驱动模型处理用户输入和其他事件。当用户点击按钮时,Qt 会生成一个按钮点击事件,并将其放入事件队列。事件队列会按照先进先出的顺序依次处理事件。
如果某个槽函数正在执行(即当前处于事件处理中),那么事件处理将等待当前槽函数执行完成。一旦当前槽函数执行完成,事件循环会继续处理下一个事件,包括之前被点击按钮触发的事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值