1.QT学习

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

1..pro链接库
2.QString:QString字符串操作
QTextStream配合字符串使用
赋值运算符 = 的隐式共享(Implicit Sharing

二、☆槽函数 slots

文件结构

槽函数使用步骤
1)widget.ui: 在控件栏拖入PushButton
2)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()));
☆connect()函数定义
1 自动关联:

优点:不需要手动编写 connect 函数,通过自动命名槽函数的方式来编写代码。自动关联的要求是槽函数根据源头的对象名(指针)和其信号名称来命名,元对象系统可以实现剩下的自动 connect 功能。
缺点:自动关联一般用于一个窗体之内的控件关联,其他很多情况都是需要手动编写 connect 函数的,所以学习 connect 函数的语法句式是必须的。


第二步是由 uic 和 moc 等工具自动完成的,在 Debug 文件夹里可以找到 ui_widget.h,最关键的就是 setupUi 函数末尾一句QMetaObject::connectSlotsByName(Widget);

2 手动关联:

自动关联一般用于一个窗体之内的控件关联,其他很多情况都是需要手动编写 connect 函数的,所以学习 connect 函数的语法句式是必须的。


3 文本同步显示:
源头控件 lineEdit 信号和接收端控件 label 槽函数 均是 Qt 库自带的
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()));

三、问题解决:

  1. Qt在ubuntu无法输入中文的解决

  2. QMessageBox显示中文乱码

  3. 在Linux中使用命令行启动

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。