Qt基础

一些小问题:
1:公司是vs开发qt,qt的ui拖控件,然后vs输入ui不会提示,需要右击.ui文件编译
tips
2:可以右键通过git,vs code到当前目录,cmd或者powershell的话,按住shift然后鼠标右键,就可以看到在此处打开powershell窗口,发布程序很方便

3:Qt4在Vs上qDebug会乱码

//头文件
#include <QTextCodec>
//main函数里
	QApplication a(argc, argv);

    //解决vs控制台输出中文乱码
    QTextCodec* codec = QTextCodec::codecForName("GB2312");

    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);

	qDebug() << "汉字";

这只是很基础,简单的笔记,学会使用Qt官方帮助文档,多查,不比网上搜效果差
笔记大部分来自教程:
https://www.bilibili.com/video/BV1g4411H78N?p=1&spm_id_from=pageDriver

1:第一个QT程序

默认创建有三种基类进行选择,QWidgetQMainWindowQDialog

应用程序类的头文件:
QApplication对象在Qt中,有且仅有一个

窗口对象默认不会显示,必须要调用show方法显示窗口
**exec()**让应用程序对象进入消息循环

Q_OBJECT宏:允许类中使用信号和槽的机制

Qt Creatot编码:工具-选项-文本编辑器-行为

2:常用快捷键

注释 Ctrl+/
运行 Ctrl+r
编译 Ctrl+b
查找 Ctrl+f
整行移动 Ctrl+Shift+↑或↓
自动对齐 Ctrl+i
同名文件的.h和.cpp文件切换 F4

3:添加控件

创建按钮为例
创建一个项目widget,源文件里会有main.cpp,widget.cpp源文件

//1:创建一个按钮
    QPushButton *p=new QPushButton;

    //show是显示顶层窗口控件,默认是以顶层窗口显示,所以会出现两个窗口,因此只对主窗口调用show方法
    //p->show();

    //设置其父窗口Widget
    p->setParent(this);

    //显示文本
	p->setText("我的第一个QT按钮");

	//或者创建的时候传入显示文本和父对象	
	QPushButton* p1=new QPushButton("按钮2",this);

	//设置窗口大小
	p1->resize(200,100);

	//设置固定窗口大小
	setFixedSize(600,400);

	//移动窗口
	p->move(200,100);

	//设置窗口标题
	setWindowTitle("setWindowsTitle设置标题");

4:对象树

在Qt中创建对象的时候会提供一个Parent对象指针

1)QObject是以对象树的形式组织起来的

在创建QObject对象时提供一个父对象,创建的这个QObject对象会自动添加到其父对象的children()列表。当父对象析构的时候,这个列表中的所有对象也会被析构(注意,这里的父对象不是继承意义上的父类,只不过是窗口间的父类而已,所以在一定程度上简化了垃圾回收

2)QWidget是能够在屏幕上显示的一切组件的父类

3)尽量在构造的时候指定parent对象,并且大胆的在堆上创建

5:信号和槽(理解了windows api的消息机制应该觉得信号和槽很好理解吧)

1)connect连接

	connect(信号发送方,发送的具体信号,信号接收方,信号的处理())
	connect(p,&QPushButton::clicked,this,&Widget::close);

2)信号槽的优点

松散耦合,信号发送端和接收端本身是没有关联的,通过connect连接,将两端耦合在一起

3)自定义信号和槽

需求: Train火车类
Passenger乘客类

到站后,火车触发一个到站信号,乘客响应信号,下车

a.信号(signal)

新建Train和Passenger类,继承自QObject
自定义信号,写到signals下
返回值:void
只需要声明,不需要实现,可以有参数,可以重载

b.槽(solt)

早期Qt版本必须要写到public solts下,高级版本可以写到public或者全局下
返回值:void
需要声明也需要实现,可以有参数,可以重载
Train类信号:
.h文件

signals:
	void arrive();

Passenger类槽:
.h文件

 public slots:
	void getOff();

.cpp文件

void Passenger::getOff()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值