QFileDialog

article/2025/8/23 15:17:07

一、描述 

QFileDialog 类使用户能够遍历文件系统以选择一个或多个文件或目录。

创建 QFileDialog 最简单的方法是使用静态函数:

fileName = QFileDialog::getOpenFileName(this, tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

在上面的示例中,模态 QFileDialog 是使用静态函数创建的。 该对话框最初显示“/home/jana”目录的内容,并显示与字符串“Image Files (*.png *.jpg *.bmp)”中给出的模式匹配的文件。

如果要使用多个过滤器,请用两个分号分隔每个过滤器。 例如:

"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

可以在不使用静态函数的情况下创建自己的 QFileDialog。 通过调用 setFileMode(),可以指定用户必须在对话框中选择的内容:

QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::AnyFile);

在上面的例子中,文件对话框的模式设置为 AnyFile,这意味着用户可以选择任何文件,甚至可以指定一个不存在的文件。此模式对于创建“另存为”文件对话框很有用。

fileMode 属性包含对话框的操作模式,这表明用户应该选择什么类型的对象。使用 setNameFilter() 设置文件过滤器。例如:

dialog.setNameFilter(tr("Images (*.png *.xpm *.jpg)"));

在上面的示例中,过滤器设置为“Images (*.png *.xpm *.jpg)”,这意味着只有扩展名为 png、xpm 或 jpg 的文件才会显示在 QFileDialog 中。可以使用 setNameFilters() 应用多个过滤器。使用 selectNameFilter() 选择提供的过滤器之一作为文件对话框的默认过滤器。

文件对话框有两种查看模式:列表和详细信息

  • 列表将当前目录的内容显示为文件和目录名称的列表。
  • 详细信息还显示文件和目录名称列表,但在每个名称旁边提供附加信息,例如文件大小和修改日期。

使用 setViewMode() 设置模式:

dialog.setViewMode(QFileDialog::Detail);

创建自己的文件对话框时需要使用的最后一个重要函数是 selectedFiles()。

QStringList fileNames;
if (dialog.exec())fileNames = dialog.selectedFiles();

在上面的示例中,创建并显示了一个模态文件对话框。如果用户单击确定,他们选择的文件将放入 fileName时。

默认情况下,如果平台有一个平台原生文件对话框,则将使用它。在这种情况下,用于构造对话框的小部件将不会被实例化。可以设置 DontUseNativeDialog 选项以确保将使用基于小部件的实现而不是本机对话框。

二、类型成员

1、enum QFileDialog::AcceptMode

  • AcceptOpen:打开文件
  • AcceptSave:保存文件

2、enum QFileDialog::DialogLabel:对话框中的标签,可使用 setLabelText() 设置标签上的文本。

  • LookIn
  • FileName
  • FileType
  • Accept
  • Reject    

3、enum QFileDialog::FileMode:此枚举用于指示用户可以在文件对话框中选择什么,即如果用户单击确定,对话框将返回什么。

  • AnyFile:文件名,不管它是否存在。
  • ExistingFile:单个现有文件的名称。
  • Directory:目录的名称。 显示文件和目录。
  • ExistingFiles:零个或多个现有文件的名称。

4、enum QFileDialog::Option

  • ShowDirsOnly:只在文件对话框中显示目录。(仅在目录文件模式(Directory)下有效。)
  • DontResolveSymlinks:不解析文件对话框中的符号链接。
  • DontConfirmOverwrite:如果选择了现有文件,则不要求确认。
  • DontUseNativeDialog:不要使用本机文件对话框。
  • ReadOnly:表示模型是只读的。
  • HideNameFilterDetails:指示文件名过滤器详细信息是否隐藏。
  • DontUseCustomDirectoryIcons:始终使用默认目录图标。

5、enum QFileDialog::ViewMode:这个枚举描述了文件对话框的视图模式,即将显示有关每个文件的哪些信息。

  • Detail:显示目录中每个项目的图标、名称和详细信息。
  • List:仅显示目录中每个项目的图标和名称。

三、属性成员

1、acceptMode : AcceptMode

对话框的接受模式。默认为 AcceptOpen

2、defaultSuffix : QString

默认后缀。

此属性指定一个字符串,它将被添加到文件名中。后缀通常用于表示文件类型(例如“txt”表示文本文件)。

如果第一个字符是点 ('.'),则将其删除。

3、fileMode : FileMode

对话框的文件模式。文件模式定义了用户希望在对话框中选择的项目的数量和类型。

默认为 AnyFile

4、options : Options

影响对话框外观的各种选项。默认情况下,所有选项都被禁用。

选项应在显示对话框之前设置。

5、supportedSchemes : QStringList

文件对话框应允许导航到的 URL 方案。

6、viewMode : ViewMode

文件和目录在对话框中的显示方式。

四、静态成员函数

1、QString getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly)

返回用户选择的现有目录。

创建一个模态文件对话框。如果 parent 不是 nullptr,则对话框将显示在父小部件的中心。

对话框的工作目录设置为 dir,标题设置为 caption 。其中任何一个都可能是空字符串,在这种情况下,将分别使用当前目录和默认标题。

警告:在对话框执行期间不要删除父级。如果想这样做,应该使用 QFileDialog 构造函数自己创建对话框。

QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),"/home",QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks);

2、QUrl getExistingDirectoryUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), QFileDialog::Options options = ShowDirsOnly, const QStringList &supportedSchemes = QStringList())

返回用户选择的现有目录。如果用户按下取消,它会返回一个空的 url。

getExistingDirectory() 的主要区别在于提供给用户选择远程目录的能力。这就是为什么返回类型和 dir 的类型是 QUrl。

supportedSchemes 参数允许限制用户可以选择的 URL 类型。这是应用程序声明它将支持获取文件内容的协议的一种方式。空列表意味着不应用任何限制(默认)。支持本地文件(“文件”方案)是隐式的并且始终启用;没有必要将其包括在限制中。

3、void getOpenFileContent(const QString &nameFilter, const std::function<void (const QString &, const QByteArray &)> &fileOpenCompleted)

返回用户选择的文件的内容。

该函数是异步的并立即返回。当一个文件被选中并且它的内容被读入内存时,fileOpenCompleted 回调将被调用。

auto fileContentReady = [](const QString &fileName, const QByteArray &fileContent) 
{if (fileName.isEmpty()) {// 未选择文件} else {// 使用文件名和文件内容}
};
QFileDialog::getOpenFileContent("Images (*.png *.xpm *.jpg)",  fileContentReady);

4、QString getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options())

返回用户选择的现有文件。如果用户按下取消,它会返回一个空字符串。

QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),"/home",tr("Images (*.png *.xpm *.jpg)"));

该函数使用给定的父小部件创建一个模态文件对话框。如果 parent 不是 nullptr,则对话框将显示在父小部件的中心。

文件对话框的工作目录将设置为 dir。如果 dir 包含文件名,则将选择该文件。仅显示与 filter 匹配的文件。选择的过滤器设置为 selectedFilter。参数 dir、selectedFilter 和 filter 可以是空字符串。 如果想要多个过滤器,请将它们用 ';;' 分隔,例如:

"Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)"

对话框的标题设置为 caption 。如果未指定标题,则将使用默认标题。

警告:在对话框执行期间不要删除父级。如果想这样做,应该使用 QFileDialog 构造函数自己创建对话框。

5、QStringList getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ))

返回用户选择的一个或多个现有文件。

QStringList files = QFileDialog::getOpenFileNames(this,"Select one or more files to open","/home","Images (*.png *.xpm *.jpg)");

6、QUrl getOpenFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ), const QStringList &supportedSchemes = QStringList())

返回用户选择的现有文件。如果用户按下取消,它会返回一个空的 url。

getOpenFileName() 的主要区别在于提供给用户选择远程文件的能力。这就是为什么返回类型和 dir 的类型是 QUrl。

supportedSchemes 参数允许限制用户可以选择的 URL 类型。这是应用程序声明它将支持获取文件内容的协议的一种方式。空列表意味着不应用任何限制(默认)。支持本地文件(“文件”方案)是隐式的并且始终启用;没有必要将其包括在限制中。

7、QList<QUrl> getOpenFileUrls(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options(), const QStringList &supportedSchemes = QStringList())

返回用户选择的一个或多个现有文件。如果用户按下取消,它会返回一个空列表。

getOpenFileNames() 的主要区别在于提供给用户选择远程文件的能力。这就是为什么返回类型和 dir 的类型分别是 QList<QUrl> 和 QUrl。

supportedSchemes 参数允许限制用户可以选择的 URL 类型。这是应用程序声明它将支持获取文件内容的协议的一种方式。空列表意味着不应用任何限制(默认)。支持本地文件(“文件”方案)是隐式的并且始终启用;没有必要将其包括在限制中。

8、QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ))

返回用户选择的文件名。该文件不必存在。

QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"), "/home/jana/untitled.png", tr("Images (*.png *.xpm *.jpg)"));

9、QUrl getSaveFileUrl(QWidget *parent = nullptr, const QString &caption = QString(), const QUrl &dir = QUrl(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options( ), const QStringList &supportedSchemes = QStringList())

返回用户选择的文件。该文件不必存在。如果用户按下取消,它会返回一个空的 url。

getSaveFileName() 的主要区别在于提供给用户选择远程文件的能力。这就是为什么返回类型和 dir 的类型是 QUrl。

10、void saveFileContent(const QByteArray &fileContent, const QString &fileNameHint = QString())

使用用户选择的文件名和位置将文件内容保存到文件中。 可以提供 fileNameHint 以向用户建议文件名。

该函数是异步的并立即返回。

QByteArray imageData;
QFileDialog::saveFile("myimage.png", imageData);

五、非静态成员函数

1、【信号】void currentChanged(const QString &path)

当当前文件更改以进行本地操作时,会发出此信号,并将新文件名作为路径参数。

2、【信号】void currentUrlChanged(const QUrl &url)

当当前文件更改时,会发出此信号,并将新文件 URL 作为 url 参数。

3、【信号】void directoryEntered(const QString & directory )

当用户进入目录时,会发出此信号用于本地操作。

4、【信号】void directoryUrlEntered(const QUrl & directory )

当用户进入目录时会发出这个信号。

5、【信号】void fileSelected(const QString & file)

当本地操作的选择发生变化并且对话框被接受时,该信号与选定文件一起发出。 

6、【信号】void  filesSelected(const QStringList & selected)

当本地操作的选择发生变化并且对话框被接受时,该信号与所选文件的列表一起发出。 

7、【信号】void filterSelected(const QString & filter)

当用户选择过滤器时会发出此信号。

8、【信号】void urlSelected(const QUrl & url)

当选择更改且对话框被接受时,此信号将与所选 url 一起发出。

9、【信号】void urlsSelected(const QList < QUrl > & urls)

当选择更改且对话框被接受时,此信号将与所选 URL 列表一起发出。

10、QDir directory()

返回当前显示在对话框中的目录。

11、QUrl directoryUrl()

返回当前在对话框中显示的目录的 url。

12、QDir::Filters filter()

返回显示文件时使用的过滤器。

13、void open(QObject *receiver, const char *member)

此函数将其信号之一连接到接收者和成员指定的槽。 如果 fileMode ExistingFiles,信号是 filesSelected(),否则信号是 fileSelected()。

当对话框关闭时,信号将与槽断开连接。

14、bool restoreState(const QByteArray &state)

将对话框的布局、历史和当前目录恢复到指定的状态。

通常这与 QSettings 结合使用以恢复过去会话的大小。

如果有错误返回 false。

15、QByteArray saveState()

保存对话框布局、历史和当前目录的状态。

通常这与 QSettings 结合使用以记住未来会话的大小。

16、void selectFile(const QString &filename)

选择给定的文件名。

17、void selectMimeTypeFilter(const QString &filter)

设置当前的 MIME 类型过滤器。

18、void selectNameFilter(const QString &filter)

设置当前文件类型过滤器。通过用分号或空格分隔多个过滤器,可以在过滤器中传递多个过滤器。

19、void selectUrl(const QUrl &url)

在文件对话框中选择给定的 url。

非原生 QFileDialog 仅支持本地文件。

20、QStringList selectedFiles()

返回包含对话框中选定文件的绝对路径的列表。

21、QList<QUrl> selectedUrls()

返回包含对话框中选定文件的 url 列表。

22、void setDirectory(const QString &directory)

       void setDirectory(const QDir &directory)

设置文件对话框的当前目录。

23、void setDirectoryUrl(const QUrl &directory)

设置文件对话框的当前目录 url。

24、void setFilter(QDir::Filters filters)

设置过滤器。过滤器用于指定应显示的文件类型。

25、void setHistory(const QStringList &paths)

设置文件对话框的浏览历史记录。 

26、void setIconProvider(QAbstractFileIconProvider *provider)

设置文件对话框使用的图标提供程序。

27、void setItemDelegate(QAbstractItemDelegate *delegate)

设置用于在文件对话框的视图中呈现项目的项目委托。

QFileDialog 不获取委托的所有权。

警告:不应在视图之间共享同一委托实例。 这样做可能会导致不正确或不直观的编辑行为,因为连接到给定委托的每个视图都可能收到 closeEditor() 信号,并尝试访问、修改或关闭已关闭的编辑器。

使用的模型是 QFileSystemModel。它具有自定义项目数据角色,由 Roles 枚举描述。

28、void setLabelText(QFileDialog::DialogLabel label, const QString &text)

设置文件对话框中显示的文本。 

29、void setMimeTypeFilters(const QStringList &filters)

从 MIME 类型列表中设置文件对话框中使用的过滤器。

setNameFilters() 的便捷方法。使用 QMimeType 从每个 MIME 类型中定义的 glob 模式和描述创建名称过滤器。

application/octet-stream 用于表示“所有文件 (*)”过滤器,因为这是所有文件的基本 MIME 类型。

QStringList mimeTypeFilters({"image/jpeg", // 将显示为: "JPEG image (*.jpeg *.jpg *.jpe)"image/png",  // 将显示为: "PNG image (*.png)""application/octet-stream" // 将显示为: "All files (*)"});QFileDialog dialog(this);
dialog.setMimeTypeFilters(mimeTypeFilters);
dialog.exec();

30、void setNameFilter(const QString &filter)

设置文件对话框中使用的过滤器。

如果过滤器包含一对括号,其中包含一个或多个文件名通配符模式,以空格分隔,则仅将括号中包含的文本用作过滤器。这意味着这些调用都是等价的:

dialog.setNameFilter("All C++ files (*.cpp *.cc *.C *.cxx *.c++)");
dialog.setNameFilter("*.cpp *.cc *.C *.cxx *.c++");

31、void setNameFilters(const QStringList &filters)

设置文件对话框中使用的过滤器。

请注意,过滤器 *.* 不可移植,因为文件扩展名决定文件类型的历史假设在每个操作系统上并不一致。名称中可能没有点的文件(例如,Makefile)。在本机 Windows 文件对话框中,*.* 将匹配此类文件,而在其他类型的文件对话框中可能不会。 因此,如果要选择任何文件,最好使用 *。

const QStringList filters({"Image files (*.png *.xpm *.jpg)","Text files (*.txt)","Any files (*)"});
QFileDialog dialog(this);
dialog.setNameFilters(filters);
dialog.exec();

setMimeTypeFilters() 具有为每种文件类型提供所有可能的名称过滤器的优点。例如,JPEG 图像具有三种可能的扩展名;如果应用程序可以打开此类文件,则选择 image/jpeg mime 类型作为过滤器将允许打开所有这些文件。

32、void setOption(QFileDialog::Option option, bool on = true)

启用或清除选项。

选项(特别是 DontUseNativeDialogs 选项)应在更改对话框属性或显示对话框之前设置。

在对话框可见时设置选项不能保证立即对对话框产生影响(取决于选项和平台)。

33、void setProxyModel(QAbstractProxyModel *proxyModel)

设置代理模型。如果想修改底层模型,这很有用,例如,添加列、过滤数据等。

34、void setSidebarUrls(const QList<QUrl> &urls)

设置位于侧边栏中的 url。

例如:

    QList<QUrl> urls;urls << QUrl::fromLocalFile("/Users/foo/Code/qt5")<< QUrl::fromLocalFile(QStandardPaths::standardLocations(QStandardPaths::MusicLocation).first());QFileDialog dialog;dialog.setSidebarUrls(urls);dialog.setFileMode(QFileDialog::AnyFile);if (dialog.exec()) {// ...}

35、bool testOption(QFileDialog::Option option)

是否启用了给定选项。


http://chatgpt.dhexx.cn/article/UCPxKXsF.shtml

相关文章

Qt -- QFile文件读写操作

对于文件的读写操作&#xff0c;C 和 C 都各有一套方式。而在 Qt 中也有一套&#xff0c;即使用 QFile 对文件进行读和写操作。 文件的打开方式 文件路径说明&#xff1a;&#xff08;windows-release编译&#xff09; QFile *file new QFile("EcgCap.dat");表示这…

[QT_032]Qt学习之基本文件读写QFile

本文转自&#xff1a;《Qt编程指南》 作者&#xff1a;奇先生 Qt编程指南&#xff0c;Qt新手教程&#xff0c;Qt Programming Guide 7.2 基本文件读写QFile Qt 常见的文件读写类有三个 QFile、QTextStream 和 QDataStream&#xff0c;本节先概要介绍这三个文件读写类&…

QFileInfo

一、描述 QFileInfo 提供有关文件系统中文件的名称和位置&#xff08;路径&#xff09;、访问权限、文件类型等信息。 FileInfo 还可用于获取有关 Qt 资源的信息。这个类是隐式共享的。 二、成员函数 2.1、判断函数 1、bool isAbsolute() 文件路径是否绝对路径。 注意&am…

QFile详解(文件如果不存在则创建、判断文件是否存在、获得文件的各种详细信息、读写文件)

目录 一、QFile文件如果不存在则创建的方法 二、QFile判断文件是否存在的方法 三、QFileInfo的方法获得文件的各种详细信息 四、QFile读写文件的内容 一、QFile文件如果不存在则创建的方法 QFile f("./1234.ini");if(!f.open(QIODevice::Append)){return 0;} op…

QFile文件读写

文章目录 简介常用apiQFile类读写文件QFileQTextStream读写文件 简介 QFile类提供了一个读取和写入文件的接口&#xff0c;一个读写文本、二进制文件和资源的I/O设备。 QFile读写文件的两种方式&#xff1a; 1.QFile可以单独使用。 2.QFile与QTextStream或QDataStream一起使用…

Qt之Qfile读取文件操作

文件系统&#xff1a;   文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象&#xff0c;这些设备具有读写字节块的能力。下面是 I/O 设备的类图&#xff08;Qt5&#xff09;&#x…

常用性能测试工具的比较

目录 性能测试的重要性针对接口的性能测试 性能测试基准接口性能测试的主要指标abenchjMeterKelude性能脚本各种监控工具 参考总结 性能测试的重要性 众所周知性能测试在软件测试中占有举足轻重的作用&#xff0c;尤其是对于互联网产品这种具有大用户量&#xff0c;大数据量&a…

推荐几款常用的性能测试工具

“ 对内容不感兴趣拉到最后领取今天的外卖红包。” 常用的性能测试工具 对于开发人员来说&#xff0c;首选是一些开源免费的性能&#xff08;压力&#xff09;测试软件&#xff0c;例如 ab&#xff08;ApacheBench&#xff09;、JMeter 等&#xff1b;对于专业的测试团队来说&…

10款主流的软件测试工具,你用过吗?

随着软件快速交付需求的增长&#xff0c;越来越多的企业开始通过DevOps方法加速软件开发速度但这样的话&#xff0c;有时候就无法保证质量&#xff0c;所以今天小编就来给大家介绍10款主流的软件测试工具&#xff0c;供大家参考。 1、UFT / QTP UFT&#xff0c;前身为Quick …

10款好用的自动化测试工具

&#x1f4cc; 博客主页&#xff1a; 程序员二黑 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 如果你也想学习软件测试&#xff0c;文末卡片有我的交流群&#xff0c;加入我们&#xff0c;一…

常用的软件测试工具大全

开源测试管理工具&#xff1a;Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具&#xff1a;Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具&#xff1a;Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator **[TestDirector]&…

软件测试工作中有哪些常用的工具?

软件测试工作中有哪些常用的工具&#xff1f;一般来说有开源测试管理工具、开源功能自动化测试工具、开源性能自动化测试工具、Quality Center、QuickTest Professional、LoadRunner等。 一、推荐10款常见的软件测试工具: &#xff08;1&#xff09;Bugfree BugFree是借鉴微软的…

我们常用的软件测试工具有哪些?

一名优秀的软件测试工程师&#xff0c;我觉得他一定也是一名善用工具的好手&#xff0c;他知道在软件测试领域都有哪些测试工具&#xff0c;这些工具都有什么优缺点&#xff0c;这些工具适合在什么情况下使用 &#xff0c;反馈的结果是什么&#xff0c;知道各种工具之间如何配合…

测试工具类

目录 测试接口管理工具&#xff1a; Swagger Eolink APIKit Apipost7  Apifox 自动化测试平台&#xff1a; Choerodon猪齿鱼 MeterSphere RPA 自动化测试框架 Appium Robot Framework Selenium python 自动化测试框架 1.Robot Framework 2.Pytest 3.UnitTest…

软件测试工具有哪些(软件测试常用的工具都有哪些)

一、一个从事软件测试行业十年的老司机列出以下与软件测试相关的工具&#xff1a; 1.操作系统&#xff1a; Linux&#xff1a;vmware、xshell 、xftp 、ssh2.数据库&#xff1a; 主流是以下三种数据库&#xff0c;尤其是MySQL以及oralce,在测试中必会的技能是对表的相关操作&…

软件测试工具都有哪些

小编今天把软件测试常见的工具列了一下&#xff0c;看看有没有你现在在用的&#xff1f; 开源测试管理工具&#xff1a;Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具&#xff1a;Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具&#xff1a;Jmeter…

10大主流性能测试工具,总有一款适合你

市面上流行的压力/负载/性能测试工具多是来自国外&#xff0c;近年来国内的性能测试工具也如雨后春笋崛起。同时由于开发的目的和侧重点不同&#xff0c;其功能也有很大差异&#xff0c;下面就为您简单介绍10款目前最常见的测试产品。 01 kylinTOP测试与监控平台&#xff08;商…

10个常用的软件测试工具,你不容错过

在现代软件开发中&#xff0c;软件测试是不可或缺的一部分。为了确保软件产品的质量和稳定性&#xff0c;软件测试工具成为了测试团队的得力助手。 有许多优秀的软件测试工具可以帮助测试人员在各种测试活动中提高效率和准确性。 本文将介绍10个常用的软件测试工具&#xff0c;…

Android 实现锚点定位

相信做前端的都做过页面锚点定位的功能&#xff0c;通过<a href"#head"> 去设置页面内锚点定位跳转。 本篇文章就使用tablayout、scrollview来实现android锚点定位的功能。 效果图&#xff1a; 实现思路 1、监听scrollview滑动到的位置&#xff0c;tablayout切…

为什么定位不了HTML,css 锚点定位不了

css 锚点定位不了 css 锚点定位不了只有一个原因&#xff0c;就是书写错误&#xff0c;锚点的正确书写方式有两种&#xff0c;下面为各位介绍一下。 1、使用a标签设置锚点&#xff1a; ①&#xff1a;设置一个锚点链接 html&#xff1b;(注意&#xff1a;href属性的属性值最前面…