通过 systemd service 控制 x11vnc
创建 /usr/lib/systemd/user/x11vnc.service 文件,写入以下内容:
1[Unit]
2Description=X11 VNC Server
3Requires=graphical-session.target
4After=graphical-session.target
5
6[Service]创建 /usr/lib/systemd/user/x11vnc.service 文件,写入以下内容:
1[Unit]
2Description=X11 VNC Server
3Requires=graphical-session.target
4After=graphical-session.target
5
6[Service]将 A 主机上的公钥(~/.ssh/id_rsa.pub)保存到 B 主机上的 ~/.ssh/authorized_keys 文件中,即可在 A 主机上免密登录 B 主机。
1Host xxxx # 主机别名通过环境变量 PS1 配置命令提示符,以 Ubuntu 24.04 的默认值为例:
1\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 它分为两个部分。
在 Windows 上使用 MSVC 编译的 Qt 程序,无法播放声音,QAudioDeviceInfo::availableDevices 返回空列表。
这是因为没能正确加载 Qt 插件。需要将 Qt\msvc2017_64\plugins 目录下的 audio 目录复制到可执行文件所在目录。
使用 windeployqt 部署后即可正确运行。
插件加载正确后,仍然发生无声音的问题,且 Qt 无任何报错。通过 QAudioDeviceInfo 查看支持的音频格式为:
编译时添加预编译宏 QCUSTOMPLOT_USE_OPENGL,用绘图的 QCustomPlot 子类调用 setOpenGl(true),并链接 OpenGL32
在 Windows 上使用
OpenGL32存在很严重的性能问题,可以改为使用 freeglut
修改 QCPPaintBufferGlFbo::draw,添加上下文切换的代码。
Qt 的元对象编译(MOC)系统会根据标记了 Q_OBJECT 的类生成代码。由于类通常在头文件中,因此通常需要将头文件加入编译。
1add_library(lib SHARED lib.h lib.cpp)在 Windows 上引用 lib 时,可能会遇到 staticMetaObject 符号未定义的错误。
源码地址:https://github.com/hubenchang0515/QtTheme/

Qt Theme 是一个纯 qss 的 Qt 主题项目,能够极为简单对已有项目的风格进行改进。
在 QWidget 已经加入布局之后,修改其大小,布局不会自动更新。需要调用 QWidget::updateGeometry 方法。
类似的,修改子布局时需要调用
QLayout::updateGeometry方法。
旧的方式:
1#include <QDebug>
2
3qDebug() << "hello world"现在默认所有日志都不打印,因此这种方式看不到打印
首先,Qt 的资源文件需要使用 Q_INIT_RESOURCE 宏进行初始化,参数为 qrc 文件的文件名,例如:
1Q_INIT_RESOURCE(theme); // 初始化 theme.qrc
2Q_INIT_RESOURCE(icon); // 初始化 icon.qrc并且,这个宏必须在全局命名空间下调用,例如: