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用法
需求 Qt 中 QENUMS 和 QENUM 的区别是什么? 解决 QENUM 比 QENUMS 新一些,并且 QENUM 是枚举的 name,而 QENUMS 是枚举的值。 参考 关于Q_ENUMS和Q_ENUM的区别和用法 QT元编程—-Q_ENUMS Q_ENUM与Q_ENUMS的区别 QT元编程—-Q_ENUMS Q_ENUMS用法
需求 Qt 中 QTimer 只想要使用一次。 解决 方法也很简单,就是在调用 start() 之前调用 setSingleShot(true) timer_idle_.setSingleShot(true); timer_idle_.start(); 参考 Qt之QTimer Qt之单次定时器 让QT 程序休眠一段时间的方法
需求 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....
需求 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....
需求 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
需求 qt 中 qml 程序使用在使用 ValueAxis 时,报错: ValueAxis: Unknown component. (M300) 解决 解决也很简单,把 ValueAxis 修改为 ValuesAxis 。相关的都要按照 ValuesAxis 来做. 参考 ValueAxis: Unknown component. (M300) ValueAxis QML Type
需求 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
需求 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 命令行客户端
需求 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获取编译时间
需求 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....