这里写目录标题
- 1.软件下载
- 2 新建工程
- 3.信号与槽
- 4.使用子线程
- 5 实战:计算器实现
- 6 定时器
- 7.图片显示
- 8. QMainWindow 和 文件操作
- 9 . 事件
- 10.TCP
- 11.窗口跳转
- 12.多线程
- 13.自定义信号
- 14. 数据库
- 15. QTableView
- 16. QCustomPlot使用
- 17. 结构体的互引用
- 18. 项目移植到新电脑后注意事项
- 19. 关于QPainterPath的一个问题
- 20. 鼠标单击、双击问题解决
- 21. SIGSEGV错误
- 22.由于结构体中使用了QByteArray数据,导致程序崩溃
- 23. ui界面自动生成connect函数的机制
- 24. toolbutton显示问题
- snap7通信
1.软件下载
https://blog.youkuaiyun.com/weixin_42214237/article/details/131997396
安装使用教程
2 新建工程
(1)
(2)选择分类
QMAINWINDOW
带菜单栏
QWIGET
不带菜单栏
QDIALOG
对话框
(3)选择工具库
(4)选择编译工具
qmake
才会产生 .pro文件
3.信号与槽
打开槽函数:
(1)右键控件,转到槽
(2)连接函数
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//连接信号与槽:谁发出信号,什么信号,谁处理,怎么处理
connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(on_commitButton_clicked()));
}
(3)第二种连接函数写法
取地址法
connect(ui->cancelButton,&QPushButton::clicked,this, &Widget::on_cancelButton_clicked);
(4)基于lamda的连接函数
connect(ui->browseButton,&QPushButton::clicked,[this]()
{
QMessageBox::information(this,"信息","点击浏览");
});
4.使用子线程
(1) .h文件添加包
#include
(2)创建process对象,并根据进程名执行
//创建process对象
QProcess *myProcess = new QProcess(this);
myProcess->start(program); //运行一个子进程,根据进程名
5 实战:计算器实现
使用栈,添加头文件
#include<QStack>
使用
QStack<char> stk;
stack.push('a');
6 定时器
(1)QObject: startTimer killTimer
xx.cpp
myTimerid =this->startTimer(TIMEOUT);//开启定时器,返回当前定时器编号
this->killTimer(myTimerid);//关闭定时器
//定时器事件定义
void Widget::timerEvent(QTimerEvent *event)
{
if(event->timerId()!=myTimerid){
return;
}
xxx
}
xx.h
声明虚函数
virtual void timerEvent(QTimerEvent *event); //定时器结束时触发的事件虚函数
(2)QTimer:
xx.cpp
timer = new QTimer; //初始化定时器
timer->start(TIMEOUT); //开启定时器,参数为定时时长(ms)
timer->stop();//结束定时
触发函数
void Widget::timeoutSlot()
{
xxx
}
//连接器:定时器时间结束信号与处理槽
connect(timer,&QTimer::timeout,this,&Widget