QT中信号槽的断开

 分类:Others, Qt 阅读 (88)  No Responses »
2月 142019
 

对对象每次执行一次connect的操作,都会增加一个信号槽连接

如果我们想断开某个对象的所有信号槽,调用对象的disconnect()方法

如果想断开某一个信号槽,在connect时将返回的对象保存一下,然后调用QObject的disconnect()就可以了,如下面的代码:

dialog.cpp文件

dialog.h头文件

界面图片:

 Posted by on 2019-02-14
1月 282019
 

开发环境:QT+Vs2015

想使用SetCursorPos来控制鼠标的位置

#include <Winuser.h>

但是编译时,总时提示无法解析的外部符号

网上搜了一上,需要引用User32.lib库,最后发现需要在项目的.pro文件中加入user32的库的引用,如下:

如果编译还是不成功,把项目目录下生成的debug目录(build-xxxx-Desktop_Qt_5_10_1_MSVC2015_32bit-Debug)删除掉,再重新编译一下

 Posted by on 2019-01-28
1月 272019
 

  QLabel并不支持鼠标按下、松开等事件,我们需要新建一个QLabel的子类来支持。

  编写qadvancedlabel.h

  然后增加QAdvancedLabel的cpp文件,qadvancedlabel.cpp

  然后在程序中的实现:

  mainwindow.h文件

  mainwindow.cpp文件

  记得一定要设置setMouseTracking,否则只有按下时才会响应move事件。

 

 

 Posted by on 2019-01-27

qt中发送http请求

 分类:C++, Others, Qt 阅读 (79)  No Responses »
8月 172018
 

  在QT中发送http请求要使用下面的几个类

  • QNetworkAccessManager – 用于实际发送网络请求
  • QNetworkRequest – 用于构造http请求的内容
  • QNetworkReply – 用于构造http响应的内容

  首先要在项目文件里增加network的支持,在xxx.pro里面加上如下代码

  下面是具体的代码:

  logindialog.h

  logindialog.cpp

 

 

 

 Posted by on 2018-08-17
6月 282018
 

1.Android.mk是Android源码编译系统的Makefile,用于编译系统中的C++和Java的动态库\静态库\可执行文件和apk等.
其大概格式如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SDK_VERSION := current
LOCAL_PACKAGE_NAME := Calculator
include $(BUILD_PACKAGE)

##################################################
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-2.1.2.jar
include $(BUILD_MULTI_PREBUILT)

# Use the folloing include to make our test apk.
include $(call all-makefiles-under,$(LOCAL_PATH))

2.常用语法格式介绍
上面的示例中共涉及到三类语法
1)变量的定义,比如其中的LOCAL_PATH为定义的变量,可以在其他地方被调用
变量不是必须全部大写或者必须以LOCAL_开头,可以是其他形式的,因为安卓的编译系统会加载所有的mk文件到一个环境里面,所以定义变量应该加上一个特殊的前缀,防止覆盖一些全局的变量.
2)my-dir为mk系统中预定义的宏,通过$(call my-dir)来调用
mk系统中还定义了很多其他的宏,这些定义均在build/core/definitions.mk中,有兴趣的可以浏览一下这个文件
3)include语法包含其他的mk文件
我们可以看到示例中有一个include $(BUILD_PACKAGE),其实BUILD_PACKAGE是在buile/core/config.mk中定义一个变量,如下:
BUILD_PACKAGE:= $(BUILD_SYSTEM)/package.mk
这一行代码其实是把package.mk包含到了编译步骤中,用于编译Calculator这个apk
4)shell命令

3.mk文件结构介绍
1)通常都以LOCAL_PATH开始,指定当前工程的路径,一般也是使用my-dir宏指定,如下:
LOCAL_PATH := $(call my-dir)

2)编写具体模块编译脚本
首先确定编译模块的类型,是静态c++库\动态C++库还是可执行程序,或者jar包或者apk,参见"模块编译类型定义"部分.
a. 一个mk文件中可以编译多种类型的模块,每个模块一般都是以include $(CLEAR_VARS)开始
CLEAR_VARS实际上是引用的build/core/clear_vars.mk文件,用于清除部分以LOCAL_开始的变量(不会清除LOCAL_PATH),具体可以浏览clear_vars.mk

b. 然后定义编译这个模块所需要用到的一些LOCAL_变量,比如如下:
LOCAL_STATIC_JAVA_LIBRARIES := libarity android-support-v4 guava  #编译apk用到的静态库
LOCAL_SRC_FILES := $(call all-java-files-under, src) # 要编译的源码
LOCAL_PACKAGE_NAME := Calculator #包名

c. include + 编译类型 结尾,如:
include $(BUILD_PACKAGE)

4.模块编译类型定义
mk系统支持多种类型的编译,这些类型都在build/core/config.mk中定义,每种编译类型由一个特定的mk文件去处理,如下是在Android4.4系统中抓取的编译类型定义.
BUILD_HOST_STATIC_LIBRARY:= $(BUILD_SYSTEM)/host_static_library.mk
BUILD_HOST_SHARED_LIBRARY:= $(BUILD_SYSTEM)/host_shared_library.mk
BUILD_STATIC_LIBRARY:= $(BUILD_SYSTEM)/static_library.mk
BUILD_RAW_STATIC_LIBRARY := $(BUILD_SYSTEM)/raw_static_library.mk
BUILD_SHARED_LIBRARY:= $(BUILD_SYSTEM)/shared_library.mk
BUILD_EXECUTABLE:= $(BUILD_SYSTEM)/executable.mk
BUILD_RAW_EXECUTABLE:= $(BUILD_SYSTEM)/raw_executable.mk
BUILD_HOST_EXECUTABLE:= $(BUILD_SYSTEM)/host_executable.mk
BUILD_PACKAGE – 构建一个Android apk
BUILD_PHONY_PACKAGE:= $(BUILD_SYSTEM)/phony_package.mk
BUILD_HOST_PREBUILT:= $(BUILD_SYSTEM)/host_prebuilt.mk
BUILD_PREBUILT:= $(BUILD_SYSTEM)/prebuilt.mk
BUILD_MULTI_PREBUILT:= $(BUILD_SYSTEM)/multi_prebuilt.mk
BUILD_JAVA_LIBRARY:= $(BUILD_SYSTEM)/java_library.mk
BUILD_STATIC_JAVA_LIBRARY:= $(BUILD_SYSTEM)/static_java_library.mk
BUILD_HOST_JAVA_LIBRARY:= $(BUILD_SYSTEM)/host_java_library.mk
BUILD_DROIDDOC:= $(BUILD_SYSTEM)/droiddoc.mk
BUILD_COPY_HEADERS := $(BUILD_SYSTEM)/copy_headers.mk
BUILD_NATIVE_TEST := $(BUILD_SYSTEM)/native_test.mk
BUILD_HOST_NATIVE_TEST := $(BUILD_SYSTEM)/host_native_test.mk
BUILD_NOTICE_FILE := $(BUILD_SYSTEM)/notice_files.mk

 Posted by on 2018-06-28

Qt生成uuid

 分类:Others, Qt 阅读 (48)  No Responses »
6月 252018
 

首选在mainwindow.h中加入头文件引用

然后在mainwindow.cpp的构造函数中加入下面的代码:

 

 

 Posted by on 2018-06-25
6月 182018
 

一、任务相关基本命令

  1. 查看所有任务

  2. 如果你的项目有多个模块,只想查看某个模块,使用如下命令(app为模块的名称):

  3. 显示任务的详细信息

  4. 执行一个任务

二、一些可能用到的辅助任务命令,这些任务名称会显示在./gradlew tasks的执行结果中

  1. 显示项目的Android依赖树

  2. 显示项目的源码定义

  3. 显示项目的签名信息

  4. 打印子模块列表

  5. 打印项目中用到的所有依赖树

三、其他命令

  1. 查看gradle版本和构建环境信息

 

 

 

 Posted by on 2018-06-18

vlc可用模块列表

 分类:Others, Others 阅读 (706)  No Responses »
5月 242018
 

使用如下命令可以获取一份vlc模块列表

下面是我本地生成的:

 

 Posted by on 2018-05-24
5月 242018
 

使用protocol buffers提供的工具protoc进行编译,将proto文件生成相关的java和c++文件,命令行大致如下:

~/下载/protoc-3.2.0-linux-x86_64/bin/protoc –plugin=protoc-gen-grpc-java=/media/win150g/document/grpc/grpc-java/compiler/build/exe/java_plugin/protoc-gen-grpc-java –grpc-java_out=lite:/media/win150g/document/grpc/GrpcTestApp/app/src/main/java –plugin=protoc-gen-grpc-cpp=/media/win150g/document/grpc/grpc-cpp/grpc/bins/opt/grpc_cpp_plugin –grpc-cpp_out=./ –cpp_out=./  –java_out=/media/win150g/document/grpc/GrpcTestApp/app/src/main/java test.proto

各参数说明:

相关链接:

各种开发工具的plugin附件

grpc_ruby_plugin grpc_python_plugin grpc_php_plugin grpc_objective_c_plugin grpc_csharp_plugin  protoc-gen-grpc-java grpc_cpp_plugin

 Posted by on 2018-05-24
5月 212018
 

出现这种问题一般是没有找到libxxx.so的库,需要配置系统环境变量LIBRARY_PATH或者LD_LIBRARY_PATH

几种配置系统环境变量的方法:

1. 在命令行中使用export,如

此方法在新建命令行窗口或者切换到其他窗口后,系统环境变量就无效了

2. 在~/.bashrc或者/etc/profile中修改

vi ~/.bashrc #打开编辑bashrc文件

source ~/.bashrc #使bashrc的文件修改立即生效

此方法修改的会永乐有效

 Posted by on 2018-05-21