//创建一个按钮
QPushButton *btn1=new QPushButton;
//btn依赖于的窗口
btn1->setParent(this);
//显示文本
btn1->setText("第一个按钮");
QPushButton *btn2=new QPushButton("1234",this);
//移动控件
btn1->resize(100,150);
btn1->move(100,100);
//重置窗口大小
resize(512,512);
//设置固定窗口大小
//setFixedSize(512,512);
//设置窗口标题
setWindowTitle("测试窗口");
信号与槽
自定义的信号与槽
发出信号
槽
槽函数
信号连接信号:通过信号来触发信号
断开信号:disconnect()
Lambda表达式(匿名函数)
[capture](parameters)mutable->return-type
{
statement
}
[]:标志着函数的开始
=:值传递,所有可用变量
&:引用传递
this:
菜单栏和工具栏、状态栏、铆接部件
二、QMainWindow 菜单栏和工具栏
//菜单栏最多只有一个
//菜单栏创建
QMenuBar * bar=new QMenuBar();
//QMenuBar * bar1=menuBar();
//将菜单栏放入窗口
setMenuBar(bar);
//创建菜单
QMenu* filename1= bar->addMenu("文件");
QMenu* filename2= bar->addMenu("编辑");
//创建菜单项
filename1->addAction("新建");
//添加分隔符
filename1->addSeparator();
filename1->addAction("保存");
filename2->addAction("撤销");
//工具栏 可以有多个
QToolBar * toolBar = new QToolBar(this);
// addToolBar(toolBar);
//停靠区域
addToolBar(Qt::LeftToolBarArea,toolBar);
//后期只允许左右停靠
//工具栏添加内容
toolBar->addAction("1");
//添加小的控件 按钮
QPushButton * btn =new QPushButton("按钮",this);
toolBar->addWidget(btn);
三、QMainWindow状态栏、浮动窗口、铆接部件、中心部件
3.1 状态栏
提示信息 最多只有一个
//状态栏
QStatusBar *stBar=new QStatusBar();
//放入窗口
setStatusBar(stBar);
//放标签控件
QLabel *label1 =new QLabel("提示信息",this);
stBar->addWidget(label1);
QLabel *label2 =new QLabel("右侧提示信息",this);
stBar->addPermanentWidget(label2);
//铆接键 浮动窗口 可以有多个 浮动窗口围绕着核心做的
QDockWidget *dockbar=new QDockWidget("浮动",this);
addDockWidget(Qt::BottomDockWidgetArea,dockbar);
//设置中心部件 只能有一个
QTextEdit *edit=new QTextEdit(this);
setCentralWidget(edit);
四、资源文件的添加
QT 添加资源文件_technologyleader的专栏-CSDN博客_qt添加资源文件
五、模态和非模态对话框创建QDialog
模态:不可以再对其他窗口做操作
非模态:可以再对其他窗口做操作
标准对话框:
消息对话框:
其他标准对话框:颜色对话框、警告对话框、提问对话框
六、登录窗口布局
七、控件
按钮:
1、QPushButton 推动按钮
典型应用:确定(OK)、应用(Apply)、撤消(Cancel)、关闭(Close)、是(Yes)、否(No)和帮助(Help)等。该按钮是矩形的,并且通常显示一个文本标签来描述它的操作。
QPushButton *pushbutton = new QPushButton("&Help", this);
// 常用构造
QPushButton ( QWidget * parent = 0 )//构造一个没有文本的推动按钮,参数为parent。
QPushButton ( const QString & text, QWidget * parent = 0 )
QPushButton ( const QIcon & icon, const QString & text, QWidget * parent = 0 )
2、QRadioButton 单选按钮
QRadioButton窗口部件为单选按钮提供了一个文本标签,是一个能够切换开(选择)或者关(没有选择)的选择按钮。通常单选按钮是用于当前用户选择许多中的一个选项。在同一时刻,单选按钮组中仅仅只有一个按钮被选择;如果用户选择其他按钮,以前选择的按钮将要切换为关闭状态。
QRadioButton::QRadioButton ( QWidget * parent = 0 )
QRadioButton::QRadioButton ( const QString & text, QWidget * parent = 0 )
3、QCheckBox 复选按钮
QCheckBox窗口部件提供一个带文本标签的复选按钮,QCheckBox和QRadioButton都是选项按钮,能够在开(选中)或者关(未选中)之间切换,QCheckBox和QRadioButton的区别是在于对用户选择的限制。单选按钮定义了“多选一”的选择,而复选按钮定义了“多选多”的选择。
QButtonGroup在视觉上能够把许多的复选按钮组合在一起,成为一个按钮组。
无论复选按钮选中或者是未选中,它都会发射一个信号toggled()。在任何时刻,如果您想改变复选按钮的状态的时候,需要连接toggled()信号触发这个行为。您也可以利用isChecked()函数来查询复选按钮是否被选中。
利用checkState()函数来查询当前的切换状态也可以使用,文本可以通过构造函数或者setText()来设置,图标可以通setIcon()来设置。
// 构造一个参数为parent的复选按钮,但是该按钮不显示文本信息。
QCheckBox::QCheckBox ( QWidget * parent = 0 )
QCheckBox::QCheckBox ( const QString & text, QWidget * parent = 0 )
// 返回复选框的复选状态。也可以参考setCheckState()函数和Qt::CheckState。
Qt::CheckState QCheckBox::checkState () const
// 参数state是用来设置复选框的复选状态。
void QCheckBox::setCheckState ( Qt::CheckState state )
// 当复选框的状态改变的时候,就是发射stateChanged()信号。也就是说,用来检查用户选择还是没有选择。
void QCheckBox::stateChanged ( int state ) [signal]
工具按钮:显示图片或文字或叠加
单选按钮:
多选按钮:
八、QListWidget(3个)
Qt5.9中控件listWidget用法(QListWidget基本用法)_净无邪博客-CSDN博客_qlistwidget
Qt中QTreeWidget根据数据库内容动态构建目录_azazssaz2的博客-CSDN博客_qt qtreewidget
Qt中tableWidget的样式总结_听风的雨滴-CSDN博客_qt tablewidget
九、其他控件
十、自定义控件及封装
十一、Qt中的鼠标事件
QT开发(六)—— 鼠标,键盘事件_刘桂林的博客-CSDN博客_qt键盘事件
十二、定时器
qt定时器精度_半宛清愁的博客-CSDN博客_qt定时器精度
Qt 定时器 QTimer_吾生也有涯,而知也无涯-CSDN博客_qt定时器
十三、event事件分发器
十四、事件过滤器
十五、绘图事件
十六、文件操作
十七、Qt串口类
当前的QtSerialPort模块中提供了两个C++类,分别是QSerialPort 和QSerialPortInfo。
QSerialPort 类提供了操作串口的各种接口。
QSerialPortInfo 是一个辅助类,可以提供计算机中可用串口的各种信息。
使用方法:
Qt 串口通信(QSerialPort)_shenmingyi.blog.csdn.net-CSDN博客_qt串口通信
Qt 串口类QSerialPort 使用笔记_Ivan 的专栏-CSDN博客
1.包含头文件
#include "QtSerialPort/QSerialPort" //提供了操作串口的各种接口
#include "QtSerialPort/QSerialPortInfo" //是一个辅助类,可以提供计算机中可用串口的各种信息
2.在pro文件中增加如下内容:
QT += serialport
3.要先获取到 可连接的所有的串口的名字
QSerialPortInfo::availablePorts()
[static] QList<QSerialPortInfo> QSerialPortInfo::availablePorts()
Returns a list of available serial ports on the system.
返回系统上可用串行端口的列表
void MainWindow::GetSerialNames()
{
QStringList m_serialPortName;
foreach(const QSerialPortInfo &info,QSerialPortInfo::availablePorts())
{
m_serialPortName << info.portName();
qDebug()<<"serialPortName:"<<info.portName();
}
}
通常,我们需要指定程序使用某一个确定的串口,这时不能只使用串口名称,因为USB串口每次插在不同的USB口上时获得的串口名称都可能有变化。这时可以利用串口的序列号,这个号码一般来说是唯一的,比如下面的代码,首先遍历所有的串口,找到我们需要的串口后就返回。
QSerialPort 负责具体的串口操作。选定串口后,要先打开串口,才能设置波特率等参数。这些参数都设置好了就可以使用了。最基本的操作无非是read() 和 write()。需要注意的是这两个操作都是非阻塞的。
另外有一个重要的signal 也需要用到,那就是 void QIODevice::readyRead()
每次串口收到数据后都会发出这个signal。我们的程序中需要定义一个slot,并将其与这个signal 相连接。这样,每次新数据到来后,我们就可以在slot中读取数据了。这时一定要将串口缓冲区中的数据全部读出来,可以利用readAll() 来实现。
QT的串口类QSerialPort_FunkyFrog821951259的博客-CSDN博客
4.根据串口名字,打开相应串口