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

linux 和 windows 的 Gui 区别介绍

需求 了解 linux 和 windows 的 gui 大概的区别 解决 90年代 windows: gdi32.dll linux: x 普通情况都是使用 cpu 渲染 -> 显存 -> 显卡适配器 -> vga. 游戏都是 DirectX / OpenGL -> GPU -> 显存… vista 年代 windows: GDI+ -> Direct2D -> GPU Linux: AIGLX(X) -> OpenGL -> GPU 都是可以直接用 GPU,走的以前游戏这条路。 现在 windows: 小改动 win32k.sys, DirectX Linux: Wayland 替代 X, Vulkan 可能替代 OpenGL 参考 Linux 为何不把图形用户界面写入内核? - 12345的回答 - 知乎

2024-05-03 · 1 min · 66 words · RamLife

Java 对数 log 计算

需求 java 中对数 log 如何计算? 解决 直接使用 Math.log 即可,唯一需要注意的是 底数是多少? 自然对数 e double x = Math.log(10); 底数 10 double x = Math.log10(100); 其他底数 数学换底公式: logx(y) = ln(y) / ln(x) 库函数: public class Logarithm { public static double log(double value, double base) { return Math.log(value) / Math.log(base); } } 计算以33为底27的对数: public static void main(String[] args) { double log = log(27, 33); System.out.println(log); } private static double log(double value, double base) { return Logarithm....

2024-04-06 · 1 min · 77 words · RamLife

QT gui 单元测试高级部分

需求 qt 如何进行 gui 单元测试高级特性 解决 测试焦点 使用焦点时需要考虑的重要一点是,在小部件上简单地调用 QWidget::setFocus 将不起作用,因为在执行测试期间小部件不可见。我们需要做的是在我们正在测试的 QWidget 上调用静态函数 QApplication::setActiveWindow void TestPanelConcat::TestFocus() { // enables focus and widget events QApplication::setActiveWindow(&panel); // set initial focus panel.mInputA->setFocus(); QVERIFY2(panel.mInputA->hasFocus(), "Input A doesn't have focus"); // write STR1 QTest::keyClicks(QApplication::focusWidget(), STR1); // move focus to next widget QTest::keyClick(&panel, Qt::Key_Tab); QVERIFY2(panel.mInputB->hasFocus(), "Input B doesn't have focus"); // write STR2 QTest::keyClicks(QApplication::focusWidget(), STR2); // move focus to next widget QTest::keyClick(&panel, Qt::Key_Tab); QVERIFY2(panel.mButtonConcat->hasFocus(), "Button CONCAT doesn't have focus"); // press button CONCAT using space QTest::keyClick(QApplication::focusWidget(), Qt::Key_Space); QCOMPARE(panel....

2024-02-29 · 2 min · 220 words · RamLife

QT gui 单元测试简单部分

需求 qt 如何进行 gui 单元测试 解决 创建项目 别忘了勾选 gui 选项 获取访问权限 在需要测试的 widget 中需要增加友元类: class WIDGETSLIBSHARED_EXPORT PanelConcat : public QWidget { Q_OBJECT friend class TestPanelConcat; public: 基本测试 测试生成 测试有没有创建 widget void TestPanelConcat::TestConstruction() { QVERIFY2(panel.mInputA, "Input field A not created"); QVERIFY2(panel.mInputB, "Input field B not created"); QVERIFY2(panel.mLabelRes, "Result label not created"); } 测试重要属性 void TestPanelConcat::TestSize() { QVERIFY2(panel.minimumWidth() == PanelConcat::MIN_W, "Minimum width not set."); QVERIFY2(panel.minimumHeight() == PanelConcat::MIN_H, "Minimum height not set"); } 模拟简单使用 可以模拟鼠标和键盘,通过 keyClicks, mouseClick....

2024-02-23 · 2 min · 264 words · RamLife

QT cpp 单元测试高级部分

需求 qt 如何单元测试高级特性 解决 创建项目 new project -> other project -> subdirs project: 用于创建包含多个测试项目的父项目 new project -> other project -> qt unit test: 单个的测试项目,提供更多的选项 数据驱动 添加数据 在测试函数的后面添加 _data 后缀的同名私有槽函数,然后通过 QTest::addColumn 添加列, QTest::newRow 添加行. void TestCalculator::testDiff_data() { QTest::addColumn<int>("a"); QTest::addColumn<int>("b"); QTest::addColumn<int>("result"); QTest::newRow("all 0") << 0 << 0 << 0; QTest::newRow("same number") << 10 << 10 << 0; // ... more data ... } INDEX NAME a b result 0 “all 0” 0 0 0 1 “same number” 10 10 0 使用数据 使用 QFETCH 来提取数据...

2024-02-23 · 2 min · 247 words · RamLife

QT cpp 单元测试简单部分

需求 qt 如何进行单元测试 解决 创建项目 new project -> other project -> auto test project framework: Qt Test Gui Application: 是否需要测试 Gui Widget QApplication: 是否需要 QApplication 相关 Generate init and clean: 是否需要创建初始化和清理代码 初始化和清理 initTestCase() : 第一个测试函数之前被调用 initTestCase_data (): 创建一个全局测试数据表 cleanupTestCase (): 最后一个测试函数后被调用 init (): 每个测试函数之前被调用 cleanup (): 每个测试函数之后被调用 测试语句 一般用的比较多的就是 QVERIFY, QVERIFY2, QCOMPARE QVERIFY, 只能提示真假 QVERIFY2, 额外提供设定好的信息 QCOMPARE, 提供更为详细的报错说明 QVERIFY(c1.getA() == 0); QVERIFY2(c2.getA() == A, "first operand doesn't match"); QCOMPARE(mCalc.Sum(), A0 + B0); 测试类申明 QTEST_MAIN: 完整项目测试 QTEST_GUILESS_MAIN: 没有界面的测试 QTEST_APPLESS_MAIN: 没有界面,没有事件的测试 // full Qt application QTEST_MAIN(TestName) // core Qt application: no GUI, but event loop is available QTEST_GUILESS_MAIN(TestName) // no Qt application: no GUI and no events QTEST_APPLESS_MAIN(TestName) 如果申明的 cpp 文件没有对应的 h 文件,那么还需要在末尾额外包含信息:...

2024-02-23 · 1 min · 147 words · RamLife

matplot 双X轴和辅助线

需求 使用 matplot 时,需要使用顶部的 X 轴,并且添加两个 X 轴的辅助线 解决 双X轴可以使用 twiny, 辅助线可以使用 MultipleLocator !/usr/bin/python3 import matplotlib.pyplot as plt import numpy as np from matplotlib.ticker import MultipleLocator, FormatStrFormatter sin_num = 2 x = np.linspace(0, 50, 150) y_ok = np.sin(x / sin_num) * 3 + 6 y1 = y_ok[ : 120] y2 = y_ok[ : 120] x_1 = x[ : 120] #x2 = np.linspace(0, 30, 120) fig, axes = plt.subplots() fig.set_size_inches(10, 5) axes....

2024-02-21 · 1 min · 194 words · RamLife