Skip to content

Instantly share code, notes, and snippets.

View abc881858's full-sized avatar

吴冬亮 abc881858

View GitHub Profile
@abc881858
abc881858 / CMakeLists.txt
Last active September 30, 2025 03:15
Qt proto grpc CMakeLists.txt demo
cmake_minimum_required(VERSION 3.16)
project(tt_client VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
@abc881858
abc881858 / hexToShort
Created March 22, 2024 19:25
Qt中QString(Hex)转负数short
QString str("807F");
bool ok;
short value = static_cast<short>(str.toUShort(&ok, 16));
qDebug() << value;
@abc881858
abc881858 / GLWidget
Created March 15, 2024 18:04
Qt OpenGL Render
QOpenGLWidget
比如我们想要显示一张 QImage
我们可以用 QLabel 直接 setPixmap
也可以用 QGraphicsView 里设置一个 QGraphicsPixmapItem
但假如我们这张图需要不停刷新(30fps)并能随着控件大小缩放时
特别是 4K 分辨率下,性能 就出现了瓶颈
究其原因,还是 CPU 渲染慢,所以我们改用 GPU 来渲染
自然,我们首先想到的是 QOpenGLWidget
下面是个保持图像 400x640 比例的类,m_x、m_y 代表横纵黑边的长度
glwidget.h
@abc881858
abc881858 / qthread_demo.cpp
Created March 15, 2024 17:00
信号槽多线程demo
//worker.h
#pragma once
#include <QObject>
class Worker : public QObject
{
Q_OBJECT
public:
explicit Worker(QObject *parent = nullptr);
#!/bin/bash
set -e
echo "Installing OpenCV 4.5.2 on your Raspberry Pi 64-bit OS"
echo "It will take minimal 1.5 hour !"
cd ~
# install the dependencies
sudo apt-get install -y build-essential cmake git unzip pkg-config
sudo apt-get install -y libjpeg-dev libtiff-dev libpng-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgtk2.0-dev libcanberra-gtk* libgtk-3-dev
@abc881858
abc881858 / Q_GLOBAL_STATIC.cpp
Created March 7, 2024 11:49
Qt Global Static
单例模式
很多人洋洋洒洒写了一大堆
比如这里 http://xtuer.github.io/qtbook-singleton/
比如这里 http://m.blog.csdn.net/Fei_Liu/article/details/69218935
但是Qt本身就提供了专门的宏 Q_GLOBAL_STATIC
通过这个宏不但定义简单,还可以获得线程安全性。
@abc881858
abc881858 / style3.qss
Created March 4, 2024 08:54
QHeaderView style
QHeaderView::section{
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343, stop:1 #656565);
color: white;
padding-left: 4px;
border: 1px solid #6c6c6c;
}
QTableView{
gridline-color: white;
}
@abc881858
abc881858 / style2.qss
Created February 28, 2024 07:36
qt style 2
QSlider::groove:horizontal{
height:8px;
background-color:#646466;
border-radius:4px;
}
QSlider::groove:horizontal:disabled{
background-color:#3c3d3e;
}
QSlider::handle:horizontal{
background-color:#878787;
@abc881858
abc881858 / qt style
Created February 28, 2024 07:34
style.qss
*{
outline: 0px;
}
QListWidget{
color: white;
}
QListWidget::item:selected{
background:#484c58;
@abc881858
abc881858 / byte_to_float.cpp
Created February 28, 2024 07:18
byte[4] to float
#include <iostream>
#include <cstdint>
int main() {
uint8_t data[4] = {0xAA, 0xBB, 0xCC, 0xDD};
float result = 0.0f;
for (int i = 0; i < 4; ++i) {
result += static_cast<float>(data[i]) * (1 << (8 * i));
}
std::cout << "Result: " << result << std::endl;
return 0;