-
QT的核心机制:信号与槽(作用: 实现对象与对象之间的通信)
-
信号: 是我们QT中类里面额外多的内容
关键字: signals
分类: 自定义信号、qt内部类提供的信号
槽: 也是QT中类里面额外多的内容
关键字: slots
分类: 自定义槽函数、qt内部类提供的槽函数
信号与槽如何进行关联呢?
Connect(信号的发送者, 信号, 信号的接收者, 槽函数);
-
信号与槽:
<1>.信号以及槽函数能否重载: 可以的
<2>.信号以及槽函数能否被继承: 可以的
<3>.信号能否传参: 可以的
信号要进行传参需要注意:
信号的参数个数要大于等于槽函数参数的个数,并且参数类型的匹配的顺序只能是从左向右!
<4>信号如何触发: emit 信号();
<5>信号不需要我们自己去实现
-
事件函数和槽函数的区别:
事件函数:是QT类中提前定义好的虚函数,使用时需要重写,但不需要使用connect和信号进行关联。一旦信号发出,对应的事件函数就会被调用。
槽函数:可以是提前定义好的(但不是虚函数,不需要重写),也可以是自定义的(不是虚函数,不需要重写),使用时需要用connect将信号和槽关联。
文件浏览器实现(思路分析)
思路:
- 获取文本框中的路径
- 读取这个路径下的所有文件夹以及文件的信息
QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
3.使用循环的方式把读取到的文件夹以及文件的名称添加到QListWidget中
4.如果我们选择的是QListWidget中的文件夹,修改文本框中的路径,重复1,2,3的动作。注意:在每次添加新目录内容到QListWidget中的时候,要把先清空!
5.如果选择的是文件,使用记事本的程序把选中的文件打开
6.选择返回按钮的时候,修改文本框中的路径,重复1,2,3的动作!
用到的类以及方法:
QLineEdit text()、setText()
QDir setPath() cd()、 cdUp()、
entryInfoList(,QDir::AllEntries, QDir::DirsFirst)
absolutePath()
QListWidget addItem(QListWidgetItem *item)、 clear()
QListWidgetItem setIcon()、setText()
QFileInfo filename()、 isDir()、 isFile()