关于QTcreator,19年大学时写的文章了,之前写在印象笔记现在拉过来,往事如烟呐

1.初来乍到,先按照书本写一个基础列程理解一下原理。

这里创建工程的时候选择Qdialog基类,dialog.h头文件,并且勾选了创建界面

(勾选之后可以通过手动添加组块并且可以自生成他们的函数定义,如果没有勾选,就是默认选择手动代码编辑界面)

在左方Design选择喜欢的组块功能编辑:对PushButton进行功能编辑,右键选择Go to slot, 进入代码编辑状态

此时会自动产生一个函数,需要自己去编辑,想要回到原来的图形编辑状态,可以鼠标双击左边目录中的dialog.ui文件。

2.常用函数

1.connect函数

connect(小明,SIGNAL(valuechanged(int)),小黄,SLOT(setvalue(int)));

当小明(信号)发生变化(这里为监控valuechanged),小黄(槽),进行反应(这里是进行数据变动setvalue)。

mainLayout->setMargin(30); //表示控件与窗体的左右边距

mainLayout->setSpacing(40); //表示各个控件之间的上下间距

3.当选择dialog的手动编辑界面时候,

如果定义了函数,可以通过右键快速向.cpp文件中添加定义。(如图所示)

主要代码行数解析

14.设置mFindBtn为低亮(不可点击)状态

18.当mLineEdit有textChanged信号输入的时候,this(代表当前),onEnableFindBtn()函数执行,即高亮状态(可点击),估计onEnableFindBtn()编写为mFindBtn->setEnabled(enable);

4.通过点击界面启动ROS中启动.launch或者节点

system("gnome-terminal -x bash -c 'source ~/Handcar_ws/devel/setup.bash; rosrun socket_ros socket_ros_node '&");

5.关于显示中文出现乱码的问题

一般情况下我们对一个label设置文本属性的sh时候会ui->setText("你好");

然而下载到ARM开发平台上显示的时候却是乱码,原因是没有使用中文字符集,只要改成:

ui->setText(QString::fromUtf8("你好"));即可正常显示

6.关于在父窗口中点击图标实现弹出新的消息对话框

首先添加inputdlg.h头文件

InputDlg *inputDlg;//添加实现对话框的类

void showInputDlg();

connect(a,SIGNAL(clicked()),this,SLOT(showInputDlg()));//事件关联

void Dialog(这是你编写槽函数的文件名)::showInputDlg()//槽函数实现

{

}

7.关于在UI界面修改点击的图标形状,利用fontawesome图标库

这是fontawesome的图标/代码对应网站,可以找到想要的图标添加进去

http://www.bootcss.com/p/font-awesome/design.html

如图所示,在我所使用的Uidemo界面工程下的image文件夹中,添加了fontawesome.ttf文件,添加了这个文件之后就可以使用其中的图标了。

应用实例

如上图所示,0xf031(一个A字图标)图标对应的是"启动RVIZ"这一栏

8.Qt重装

ubuntu16.04下通过sudo apt安装的qtcreator是默认4.8的,4版本和5版本不尽相同

download.qt.io/archive/qt/

这是下载地址,首先用sudo apt-get remove qtcreator把原来的QT删除掉,再下载就行了

9.关于QT5.12版本无法输入中文的问题

此链接完美解决https://blog.csdn.net/amusi1994/article/details/78147696

10.QT的不同主机的socket通信

客户端

我在connect中用click发生上面这个槽函数

socket->connectToHost(_ip,_port);

这是连接函数;

QT

10.通过新打开的终端关闭已打开的终端

既然有通过socket开启不同主机进程的功能,那么当然要设置远程关闭的功能

:通过新终端关闭之前打开的正在运行的终端

这时候请观看关于linux下杀死进程的方法大全

https://blog.csdn.net/andy572633/article/details/7211546

其中比较方便使用的一种方法如下

11.QT socket通信

(client)

主是发送数据的部分

一开始的时候没有写 socket=new QTcpSocket(this);创建套接字对象,出现了发送数据后界面闪退的情况。

相关推荐
DreamLife☼5 小时前
Qt 事件系统负载测试:深入理解 Qt 事件处理机制
qt·性能优化·负载测试·性能监控·事件系统
꧁坚持很酷꧂6 小时前
Qt远程连接数据库,注册,登录
开发语言·数据库·qt
十五年专注C++开发6 小时前
QT 中的元对象系统(五):QMetaObject::invokeMethod的使用和实现原理
开发语言·数据结构·c++·qt·设计模式
m0_555762906 小时前
不在 qtdesigner中提升,进行主题程序设计
qt·命令模式
꧁坚持很酷꧂16 小时前
Qt实现点击按钮弹出侧边框(可用于登录界面)
开发语言·qt
胡斌附体17 小时前
qt tcpsocket编程遇到的并发问题
开发语言·网络·qt·并发编程·tcpsocket
JhonKI21 小时前
【从零实现Json-Rpc框架】- 项目实现 - 客户端注册主题整合 及 rpc流程示意
c++·qt·网络协议·rpc·json
"_rainbow_"1 天前
Qt添加资源文件
开发语言·qt
CoderIsArt2 天前
QT中已知4个坐标位置求倾斜平面与倾斜角度
qt·平面
__lost2 天前
Pysides6 Python3.10 Qt 画一个时钟
python·qt