
Qt
Ctrlturtle
电子科大硕士毕业, 目前工作方向为移动端机器学习应用, 业余爱好UE4独立游戏开发;
主力语言C/C++/Python,涉及Android,机器学习,游戏引擎
展开
-
Qt多线程基础(二)线程同步之信号量
一、澄清概念什么是信号量?信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。是线程同步的重要手段之一,保证线程安全。与互斥锁有何区别?信号量不一定是锁定某一个资源,而是流程上的概念,比如:有A,B两个线程,B线程要等A线程完成某一任务以后再进行自己下面的步骤。而线程互斥量则是“锁住某一资源”的概念,在锁定期间内,其他线程无法对被保护的数据进 行操原创 2016-11-04 14:14:25 · 8127 阅读 · 0 评论 -
Qt多线程基础(一)线程同步之互斥锁同步
一、直接使用QMutex进行同步创建线程方法:继承自QThread,重写void run()函数,调用成员start()启动线程,start()中可加入优先级参数。互斥锁同步方法:void run()函数中使用QMutex来实现同步,当多个线程访问共享变量时,应使用lock/trylock和unlock将对共享变量的操作代码包裹,以保证同步访问共享变量。(C++中引起线程安全的共享资源只有原创 2016-11-04 13:45:08 · 44967 阅读 · 3 评论 -
【转】QSS独门秘籍:subcontrol
QSS是C++ Qt中的界面美化神器,其语法和CSS区别不大,但是QSS有一个独有的功能——subcontrol,这是CSS所没有的,一个widget往往由多个子部件构成,利用subcontrol可以对窗口部件的某些子部件做精细处理,从而使得界面美化达到定制最大化。Subcontrol 的绘制位置由 subcontrol-origin、subcontrol-position, top, l转载 2016-12-28 21:58:44 · 1854 阅读 · 0 评论 -
Qt for ARM_Linux环境搭建-Qt5.7+iTop4412嵌入式平台移植
经过为期3天的编译、移植,终于将Qt5.7成功移植到iTop4412开发板,板载exynos4412处理器,基于ARM Cortex-A9内核。因此,本篇教程以iTop4412示例,适用于Qt5.7在ARM_Linux平台上的移植。----------------------------------------------------------------------------------原创 2016-10-31 11:42:50 · 18861 阅读 · 7 评论 -
Qt for iOS环境搭建-MacOS10.10+Qt5.7(全图解)
本文记录本人MacOS虚拟机下搭建Qt for ios开发环境全过程,全图解展示。。。-----------------------------------------------------------------------------------------------------------环境搭建准备:1.虚拟机:VMware Workstation 102.VMware原创 2016-12-05 15:38:08 · 18835 阅读 · 3 评论 -
Qt移植字体解决方案:Android/ios/嵌入式通用
在Qt for Android开发中发现有些手机刷机后会出现字体不再是安卓默认字体DroidSansFallback,由于Qt开发的安卓应用会使用手机默认的字体,导致同一款APP现在不同手机上字体种类、大小等都不一致,因此冒出统一字体,直接将字体文件加入到APP应用的想法。该方案可以解决以下两种情况:(1)Qt移植到移动端或嵌入式平台时出现中文乱码的情况;(2)想把某种字体文件设置为Q原创 2016-12-29 15:48:23 · 2718 阅读 · 0 评论 -
Qt动画框架
Qt5以后官方大力推介QtQuick,有个重要的原因在于qml可以方便地写出酷炫的动态页面,在Qt widgets中,Qt也提供了C++可以直接使用的动画框架。Qt动画框架可以是独立的,也可以是状态机框架的一部分。动画框架的顶层基类为QAbstractAnimation,它包含了一些在框架中被普遍使用的基本功能;尤其是启动、停止和暂停动画功能,它也接收定时触发通知。其子类QVariantAni原创 2016-12-29 15:11:45 · 819 阅读 · 0 评论 -
Qt网络编程之获取网络信息
在网络编程中经常需要获取本地或远程主机的网络信息,如IP地址、子网掩码、广播地址等,Qt network模块中提供了一些方便的类,如QHostInfo、QNetworkInterface等。本文将从三种情况介绍Qt网络编程中如何获取主机网络信息。1.获取本机主机名和IP地址(利用QHostInfo类)QHostInfo可以调用QHostInfo::localHostName()原创 2016-12-29 12:42:51 · 3753 阅读 · 0 评论 -
强大的QString:一些常用且方便的成员
QString是Qt中使用频率最高的几种数据类型之一,主要在于其提供了大量功能强大的成员,其中有几个方便的操作与大家分享一下:1.字符串处理与匹配(1)mid():返回给定位置(参1)到给定长度(参2)的子串这是Qtring里一个常用的成员函数,类似于std::string的substr(),非常方便。它是个重载过的成员,如果不带参2,就会返回起点到字符串末尾为止的子串。原创 2016-12-28 21:38:40 · 7265 阅读 · 1 评论 -
Qt 中的那些“坑” (一)
本文记录自己在使用Qt过程中遇到的坑,有些是自己疏忽或认识不足导致的问题,有些是Qt自身的bug或陷阱。本文旨在总结自己遇到的问题和解决方法。------------------------------------------------------------本文将持续更新,如有帮助请收藏-------------------------------------------1.关原创 2016-11-17 15:06:04 · 7504 阅读 · 2 评论 -
(福利一波)Qt for Win/Linux/Android/iOS/嵌入式linux环境搭建资源分享
本博客提供QtQt for Win/Linux/Android/iOS/嵌入式linux环境搭建的所需工具包资源,已陆续上传至百度云。 Qt环境搭建系列教程: 1.Qt 桌面应用开发环境搭建:http://blog.youkuaiyun.com/hechao3225/article/details/52981007 2.Qt for Android应用开发环境搭建:http:原创 2016-12-06 16:49:49 · 1735 阅读 · 2 评论 -
Qt for Android环境搭建-win7+Qt5.7(全图解)
Qt应用软件在Android系统(arm架构处理器)运行,也需要经过交叉编译,但是Qt推出了Qt for Android官方版,因此无需自行交叉编译并移植Qt库,我们只需在win、linux或mac下搭建Qt for Android的开发环境并作适当软件源码的修改即可,因此本篇以Win7下示例。搭建Qt for And。oid开发环境1)首先下载 Qt 5.7.0 for An原创 2016-10-31 14:56:11 · 18850 阅读 · 6 评论 -
Qt for PC环境搭建-Win7+Qt5.7
基于Qt库的应用开发环境主流两种:Visual studio和官方IDE QtCreator。在VS环境下,Qt库可以插件的形式加入到VS IDE环境。而官方IDE的配置更加简单,两种可根据需求自行选定。本篇将从两种主流环境分别阐述SDK开发环境的搭建。示例搭建平台:Win7。一、VS2015 + Qt5.6这里给出64位系统下的安装步骤,32位类似。 1、安装VS20原创 2016-10-31 11:29:48 · 16987 阅读 · 0 评论 -
Qt调用外部程序
一、调用系统默认应用打开文件使用QDesktopServices的openUrl()成员这个函数是跨平台的,Qt会根据不同的系统平台调用默认的程序打开指定文件,QUrl存放制定的路径,使用非常简便,示例代码如下:QString fileName=QFileDialog::getSaveFileName(this,tr("保存"), QCoreApplication::applica原创 2016-11-04 16:12:18 · 6032 阅读 · 0 评论 -
Qt实现拖放操作
拖放包括两个基本动作:拖动、放下。因此一般需要实现两个事件:示例问题:通过拖放文件实现Qt应用直接读取文本文件解决:重写两个基本事件实现拖放识别文件并实现文件读取和显示。 另外,为识别文件类型,在剪贴板和拖放系统中常使用MIME类型,Qt中的实现为QMimeData类。 可以通过官方示例MIMETypeBrowser检索所有的MIME类型。示例代码如下:原创 2016-11-04 17:01:24 · 2537 阅读 · 0 评论 -
Qt分页布局与切分窗口的实现
一、如何实现分页展示?QStackedLayout类可对窗口实现分页展示,每次只显示一个布局,将其他页的布局隐藏。为方便,Qt提供一个内置QStackedLayout的便利类:QStackedWidget.方案:QStackedWidget+QListWidget/QPushButton等步骤:(1)基于QDialog或QWidget创建一个新窗体 (2)添加一个QListW原创 2016-11-04 15:54:34 · 16701 阅读 · 1 评论 -
Qt多线程基础(三)子线程与主线程通信
一、澄清概念1.Qt主线程Qt的主线程是唯一运行创建QApplication对象并调用exec()的线程,主要用于界面显示,因此又被称为GUI线程。2.Qt子线程Qt的子线程用于一些耗时操作,因此又被称为工作线程。子线程不能用于直接刷新界面(QWidget不可重入,QObject可重入)。若子线程企图修改界面控件,可通过线程间通信的方式:Qt的信号槽机制是跨线程的,因此可以原创 2016-11-04 14:45:34 · 18100 阅读 · 6 评论 -
Qt中的泛型容器
一、关于Qt泛型容器Qt库提供了一组基于模板的一般化的容器类。这些容器可以存储指定的类型的元素。这些容器比STL容器更轻更安全更容易使用。这些类是隐式共享的,它们都是可重入,它们进行了速度优化,用更少的内存和最小的内联代码扩展,生成更小的可执行文件。此外,当所有的线程仅仅以只读的方式访问它们时,它们是线程安全的。为了遍历容器的元素,你可以用 Java-style itera原创 2016-11-04 15:09:50 · 4332 阅读 · 0 评论 -
【转】 用Qt Creator编译opencv并配置开发环境
原文链接:http://blog.youkuaiyun.com/scien2011/article/details/52830794#reply前言OpenCV是一个跨平台计算机视觉库,使用前需要把它编译成二进制的静态库和动态库,之后在代码中直接连接到二进制库。网上很多教程都是用CMake配合MinGW编译opencv,其中需要用到命令行操作,其实有更简单的方法,Qt Creator支转载 2017-05-09 10:24:28 · 2112 阅读 · 1 评论