一、QT 知识学习https://qtguide.ustclug.org/

1..pro
链接库

2.QString
:QString字符串操作



二、☆槽函数 slots

槽函数使用步骤:
1)
widget.ui
: 在控件栏拖入PushButton2)
widget.h
:
public slots: //槽函数声明标志
void FoodIsComing(); //槽函数
3)Widget.cpp
:
//#1.槽函数定义代码,与普通成员函数类似
void Widget::FoodIsComing()
{
QMessageBox::information(this, tr("送餐"), tr("叮咚!外卖已送达"));
}
//#2.添加关联代码,必须放在 setupUi 函数之后
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(FoodIsComing()));

1 自动关联:
优点:不需要手动编写 connect 函数,通过自动命名槽函数的方式来编写代码。自动关联的要求是槽函数根据源头的对象名(指针)和其信号名称来命名,元对象系统可以实现剩下的自动 connect 功能。
缺点:自动关联一般用于一个窗体之内的控件关联,其他很多情况都是需要手动编写 connect 函数的,所以学习 connect 函数的语法句式是必须的。
![]()
第二步是由 uic 和 moc 等工具自动完成的,在 Debug 文件夹里可以找到 ui_widget.h,最关键的就是 setupUi 函数末尾一句QMetaObject::connectSlotsByName(Widget);
。
2 手动关联:
自动关联一般用于一个窗体之内的控件关联,其他很多情况都是需要手动编写 connect 函数的,所以学习 connect 函数的语法句式是必须的。
![]()
3 文本同步显示:

4 自定义信号和槽:
emit SendMsg( tr("This is the message!") );
emit
是发信号的关键字,然后接下来就与调用函数是一样的格式,SendMsg
里面放置我们想传递的字符串参数
发送自定义SendMsg信号
//③关联,信号里的字符串参数会自动传递给槽函数
QObject::connect(&w, SIGNAL(SendMsg(QString)), &s, SLOT(RecvMsg(QString)));

复杂多窗口的界面程序,在多个窗体对象之间就可以用 上图示范的流程,来进行通信、传递数据。
b. 关联按钮信号到自定义信号,再关联到槽函数
//showmsg.cpp: 关联按钮信号到自定义的信号
connect(ui->pushButton, SIGNAL(clicked()), this, SIGNAL(SendVoid()));
//main.cpp: ③关联源头的信号和接收端的槽函数
QObject::connect(&w, SIGNAL(SendVoid()), &s, SLOT(RecvVoid()));
网友评论