QT QENUMS 和 QENUM 区别

需求 Qt 中 QENUMS 和 QENUM 的区别是什么? 解决 QENUM 比 QENUMS 新一些,并且 QENUM 是枚举的 name,而 QENUMS 是枚举的值。 参考 关于Q_ENUMS和Q_ENUM的区别和用法 QT元编程—-Q_ENUMS Q_ENUM与Q_ENUMS的区别 QT元编程—-Q_ENUMS Q_ENUMS用法

2024-08-29 · 1 min · 23 words · RamLife

QT QTimer 单次使用

需求 Qt 中 QTimer 只想要使用一次。 解决 方法也很简单,就是在调用 start() 之前调用 setSingleShot(true) timer_idle_.setSingleShot(true); timer_idle_.start(); 参考 Qt之QTimer Qt之单次定时器 让QT 程序休眠一段时间的方法

2024-08-28 · 1 min · 17 words · RamLife

c++ 函数返回不同类型

需求 cpp 如何让调用的函数返回不同的类型? 解决 std::variant 可以返回 std::variant 定义的类型。 #include <variant> std::variant<int, double, std::string> GetDifferentValue(int choice) { if (choice == 0) { return 42; } else if (choice == 1) { return 3.14; } else { return "Hello, World!"; } } std::any #include <any> std::any GetDifferentValue(int choice) { if (choice == 0) { return 42; } else if (choice == 1) { return 3.14; } else { return "Hello, World!"; } } 模板和多态 std::unique_ptr<Base> GetDifferentValue(int choice) { if (choice == 0) { return std::make_unique<IntType>(42); } else if (choice == 1) { return std::make_unique<DoubleType>(3....

2024-08-14 · 1 min · 203 words · RamLife

QT QMap 遍历的方法

需求 Qt 中 QMap 有哪些遍历方法? 解决 迭代器 只读 for (QMap<QString, int>::const_iterator itor = map.constBegin(); itor != map.constEnd(); ++itor) { qDebug() << itor.key() << ":" << itor.value(); } 可读可写 QMap<QString, int>::iterator itor; for (itor = map.begin(); itor != map.end(); ++itor) { qDebug() << itor.key() << ":" << itor.value(); } 可读可写,更多功能,比如 remove QMapIterator<QString, int> itor(map); while (itor.hasNext()) { itor.next(); //移动到下一个元素 qDebug() << itor.key() << ":" << itor.value(); } c++11 遍历 toStdMap for (auto &pair : map....

2024-08-13 · 1 min · 130 words · RamLife

QT qml release

需求 qt 中 qml 程序如何 release? 直接使用以前的 qwidget release 不行。 解决 qml qml 程序 release 需要在 qt 的命令行中增加一个参数,指明 qml 相关的在什么地方。 # windeployqt --qmldir <path-to-app-qml-files> <path-to-app-binary> windeployqt --qmldir D:/workspace/ide/qt_v6.7/cgm_test_use_ble/cgm_test_use_ble ./appcgm_test_use_ble.exe 缺少的库 qt5 正常,qt6 默认缺少的库有: libgcc_s_seh-1.dll, libstdc++-6.dll, libwinpthread-1.dll. 需要从 qt 的安装目录中找到,然后复制过去即可。需要注意的是,你编译用的是 mingw, 那么你复制的也需要是 mingw 下面的库文件。 参考 windeployqt misses some of the libraries and gets others that are not required 【问题解决】QT报错:由于找不到libgcc_s_dw2-1.dll 、libwinpthread.dll、libstdc++-6.dll,无法继续执行代码。重新安装程序可能会解决此问题。 Qml Qt程序 打包部署 QML——打包QML程序 QT QML/QUICK 打包发布程序的简单示例 Deploying QML Applications

2024-07-05 · 1 min · 69 words · RamLife

QT qml ValueAxis 找不到

需求 qt 中 qml 程序使用在使用 ValueAxis 时,报错: ValueAxis: Unknown component. (M300) 解决 解决也很简单,把 ValueAxis 修改为 ValuesAxis 。相关的都要按照 ValuesAxis 来做. 参考 ValueAxis: Unknown component. (M300) ValueAxis QML Type

2024-06-27 · 1 min · 27 words · RamLife

QT qml qchartview 闪退

需求 qt 中 qml 程序使用 chartview 导致程序闪退。 解决 解决也很简单,只要把主程序的 QGuiApplication 改为 QApplication 即可。 参考 {Qt6}{QML}{问题}QML使用ChartView导致程序闪退问题 ChartView crash when launching on Mobile - QT QML error qml application got crashed after adding chartview. Chartview crashing in QML QML “ChartView” crashing app

2024-06-26 · 1 min · 40 words · RamLife

QT mysql 连接远端数据库无法打开

需求 Qt生成的 release,经过 windeployqt 之后,放到另外一台机器上,但是打不开网络上面的 mysql 服务器。 解决 检查 mysql 是否安装 其实很简单,因为新机器上面没有 mysql 相关的可执行文件,在机器上安装 mysql 的 client 端即可解决这个问题。 检查源码是否配置正确 另外 qt 源码当中也需要检查 连接 mysql 的配置有没有问题: // 创建一个数据库连接 QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("your_mysql_server_ip"); // 替换为你的 MySQL 服务器 IP 地址 db.setDatabaseName("your_database_name"); db.setUserName("your_username"); db.setPassword("your_password"); 检查 mysql 服务端是否开启了网络帐号 mysql 只有创建了可以网络登陆的帐号,才可以通过网络连接过来。 参考 windows安装mysql client 命令行客户端

2024-02-20 · 1 min · 50 words · RamLife

QT 获取编译时间

需求 Qt 为了功能上的需要,需要获取软件编译的时间. 解决 qt 默认的编译时间,使用的是英文字符,类似 Feb 13 2024, 而且当日期小于 10 的时候,使用的还是单个字符,没有补 0. QString build_date = QString(__DATE__); // qDebug() << "build time: " << build_date; build_date.replace(" "," 0"); //注意" "是两个空格,用于日期为单数时需要转成“空格+0” QDate build = QDate::fromString(build_date, "MMM dd yyyy"); 参考 Qt 获取编译时间 Qt获取编译时间

2024-02-01 · 1 min · 41 words · RamLife

QT chart 更加清晰

需求 qt chart 在打印的时候,因为缩放的问题,导致图标不清晰,需要能够更加清晰一些。 解决 chart 其实主要就是几个部分: 曲线,坐标轴及文字,辅助线 曲线 主要就是加粗即可,使用 QPen, 修改 width 即可。 QPen pen; pen.setStyle(Qt::SolidLine); //Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine pen.setWidth(2); pen.setColor(Qt::red); series0->setPen(pen); //序列series0的线条设置 坐标轴 为了方便修改也使用 QPen QPen axis_pen; axis_pen.setStyle(Qt::SolidLine); //Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine axis_pen.setWidth(3); axis_pen.setColor(Qt::black); axisX->setLinePen(axis_pen); 辅助线 辅助线分为两种,一种是文字对应的辅助线,另外一种是文字之间的辅助线. QPen grid_pen; grid_pen.setStyle(Qt::DashLine); //Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine grid_pen.setWidth(2); grid_pen.setColor(Qt::darkGray); QPen minor_grid_pen; minor_grid_pen.setStyle(Qt::DotLine); //Qt::SolidLine, Qt::DashLine, Qt::DotLine, Qt::DashDotLine minor_grid_pen.setWidth(1); minor_grid_pen.setColor(Qt::darkGray); axisX->setGridLinePen(grid_pen); axisX->setMinorGridLinePen(minor_grid_pen); 坐标轴文字 文字一般就是两种方法: 加粗和加大 QFont axis_font = axisX->labelsFont(); axis_font.setBold(true); int axis_font_point_size = axis_font....

2024-02-01 · 1 min · 80 words · RamLife