[QT开发_音乐播放器项目笔记00]

目录

一:常用类

01 QApplication:管理应用程序的控制流和主要设置。

02 QWidget:所有用户界面的基础类,提供窗口和控件的基本功能。

03 QMainWindow:提供主窗口的框架,包括菜单、工具栏和状态栏。

04 QPushButton:表示一个可点击的按钮。

05 QLabel:用于显示文本或图像的标签控件。

06 QLineEdit:单行文本输入框。

07 QTextEdit:多行文本输入框,支持富文本格式。

08 QComboBox:下拉列表框,允许用户选择选项。

09 QListView / QTableView:用于显示列表或表格数据的视图。

10 QTimer:用于定时执行任务。

11 QFile:处理文件读写操作。

12 QNetworkAccessManager:用于处理网络请求。

13 QListWidgetItem 是 Qt 中用于表示列表项的类

14 QIcon 是 Qt 中用于表示图标的类

15 QTableWidget 用于创建和管理表格数据。

16 QTabWidget 用于创建带有选项卡的界面,允许用户在不同的页面之间切换。

 17 QPropertyAnimation 是 Qt 中用于动画化属性的类

geometry : 表示窗口部件的位置和大小

opacity : 表示控件的透明度。

18 QScopedPointer 是 Qt 框架中用于管理动态分配对象的智能指针类。它的主要功能是确保在超出作用域时自动释放其所持有的指针,从而避免内存泄漏。

19  QList 是 Qt 框架中提供的一个模板类,专门用于存储和管理动态数组的数据类型。它是一个容器类,可以存储任意类型的对象,包括基本数据类型和自定义对象。

20 QTimer 是 Qt 中的一个类,用于定时执行某个操作。

21 QTextCodec 是 Qt 框架中的一个类,主要用于处理文本编码

23 QScrollArea 是 Qt 框架中的一个类,用于提供一个可滚动的区域,允许用户查看超过视图窗口的内容。

24 QTextStream 用于处理文本流的输入和输出,它提供了一种方便的方式来读取和写入文本数据,支持多种编码格式。

 25 QStringList是 Qt 框架中的一个类,用于存储和操作字符串的列表。它是 QString 的一个列表(或数组),提供了一些便利的功能来处理多个字符串。

二:容器类

1.QList

2. QVector

3. QMap

4. QHash

5. QSet

6. QLinkedList

7.QVariant

三:TCP网络类

1 QTcpSocket:用于客户端与服务器之间的 TCP 通信,提供发送和接收数据的功能。

2 QTcpServer:用于创建 TCP 服务器,监听和接受客户端连接。

3 QAbstractSocket:QTcpSocket 和 QUdpSocket 的基类,提供网络套接字的基本功能和信号。

4 QHostAddress:表示主机地址(IPv4 和 IPv6)。

5 QNetworkInterface:提供网络接口的信息,例如 IP 地址和状态。

QT项目记录:

QStackedWidget

setCurrentIndex(int index)


一:常用类


01 QApplication:管理应用程序的控制流和主要设置。

02 QWidget:所有用户界面的基础类,提供窗口和控件的基本功能。

03 QMainWindow:提供主窗口的框架,包括菜单、工具栏和状态栏。

04 QPushButton:表示一个可点击的按钮。

05 QLabel:用于显示文本或图像的标签控件。

  • 构造函数

    • QLabel(QWidget *parent = nullptr): 创建一个 QLabel,parent 是其父控件。
  • 设置文本

    • void setText(const QString &text): 设置标签显示的文本。
    • QString text() const: 获取当前显示的文本。
  • 设置图片

    • void setPixmap(const QPixmap &pixmap): 设置标签显示的图像。
    • QPixmap pixmap() const: 获取当前显示的图像。
  • 设置缩放

    • void setScaledContents(bool scaled): 设置是否缩放内容以适应标签大小。
  • 文本格式

    • void setAlignment(Qt::Alignment alignment): 设置文本对齐方式(如左对齐、居中、右对齐)。
    • void setWordWrap(bool enable): 设置是否允许文本换行。
  • 样式

    • void setStyleSheet(const QString &styleSheet): 设置控件的样式表,用于自定义外观。
  • 获取尺寸

    • QSize sizeHint() const: 获取建议的大小,通常用于布局管理

 pLabel->setScaledContents(true); 的意思是将 QLabel 设置为缩放内容以适应标签的大小

setPixmap 方法:这个方法用于设置 QLabel 显示的图像内容。它接受一个 QPixmap 类型的参数。

举例:

QString strPath = QString(":/images/LunBo/mrfz%1.jpg").arg(i + 1); // 生成图像路径

pLabel->setPixmap(QPixmap(strPath)); // 将图像加载到 QLabel 中

06 QLineEdit:单行文本输入框。

07 QTextEdit:多行文本输入框,支持富文本格式。

08 QComboBox:下拉列表框,允许用户选择选项。

09 QListView / QTableView:用于显示列表或表格数据的视图。

10 QTimer:用于定时执行任务。

11 QFile:处理文件读写操作。

12 QNetworkAccessManager:用于处理网络请求。

13 QListWidgetItem 是 Qt 中用于表示列表项的类

  • 构造函数

    • QListWidgetItem(): 创建一个空的列表项。
    • QListWidgetItem(const QString &text): 创建一个带文本的列表项。
    • QListWidgetItem(const QIcon &icon, const QString &text): 创建一个带图标和文本的列表项。
  • 设置文本和图标

    • void setText(const QString &text): 设置列表项的文本。
    • QString text() const: 获取列表项的文本。
    • void setIcon(const QIcon &icon): 设置列表项的图标。
    • QIcon icon() const: 获取列表项的图标。
  • 状态和选中

    • void setSelected(bool selected): 设置列表项是否被选中。
    • bool isSelected() const: 检查列表项是否被选中。
    • void setFlags(Qt::ItemFlags flags): 设置项的标志(例如,是否可选)。
  • 背景和前景

    • void setBackground(const QBrush &brush): 设置项的背景颜色。
    • QBrush background() const: 获取项的背景颜色。
    • void setForeground(const QBrush &brush): 设置项的前景颜色。
    • QBrush foreground() const: 获取项的前景颜色。
  • 其他

    • void setData(int role, const QVariant &value): 设置项的自定义数据。
    • QVariant data(int role) const: 获取项的自定义数据。
    • void setSizeHint(const QSize &size): 设置项的推荐大小。
    • QSize sizeHint() const: 获取项的推荐大小。

14 QIcon 是 Qt 中用于表示图标的类

  • 构造函数

    • QIcon(): 创建一个空的图标。
    • QIcon(const QString &fileName): 从文件路径创建图标。
    • QIcon(const QPixmap &pixmap): 从像素图创建图标。
  • 加载图标

    • bool loadFromData(const uchar *data, int size): 从字节数组加载图标。
  • 获取图标

    • QPixmap pixmap(const QSize &size, QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off) const: 获取指定大小和状态的图标。
    • QPixmap pixmap(int width, int height) const: 获取指定宽高的图标。
  • 状态和模式

    • QIcon::Mode: 定义图标的显示模式(如 Normal, Active, Disabled)。
    • QIcon::State: 定义图标的状态(如 Off, On)。
  • 图标组合

    • QIcon operator+(const QIcon &icon): 将两个图标合并。

15 QTableWidget 用于创建和管理表格数据。

  • 创建和初始化

    • QTableWidget(rows, columns): 初始化表格,设置行和列的数量。
  • 行列操作

    • setRowCount(count): 设置行数。
    • setColumnCount(count): 设置列数。
    • insertRow(position): 在指定位置插入行。
    • removeRow(position): 删除指定位置的行。
    • insertColumn(position): 在指定位置插入列。
    • removeColumn(position): 删除指定位置的列。
  • 单元格操作

    • setItem(row, column, QTableWidgetItem): 设置特定单元格的内容。
    • item(row, column): 获取特定单元格的 QTableWidgetItem
    • setCellWidget(row, column, widget): 在特定单元格中放置一个小部件。
  • 数据操作

    • setHorizontalHeaderLabels(labels): 设置列的标题。
    • setVerticalHeaderLabels(labels): 设置行的标题。
    • clear(): 清空表格数据。
    • setSortingEnabled(enabled): 启用或禁用排序功能。
  • 选择和排序

    • setSelectionMode(mode): 设置选择模式(如单选或多选)。
    • sortItems(column, order): 对指定列进行排序。
  • 信号

    • itemChanged: 当单元格内容改变时发出信号。
    • cellChanged: 当单元格内容改变时发出信号。

16 QTabWidget 用于创建带有选项卡的界面,允许用户在不同的页面之间切换。

  • 基本操作

    • addTab(widget, label): 添加一个选项卡,并指定显示的小部件和标签。
    • insertTab(index, widget, label): 在指定位置插入一个选项卡。
    • removeTab(index): 移除指定位置的选项卡。
    • setTabText(index, label): 设置指定选项卡的文本标签。
    • tabText(index): 获取指定选项卡的文本标签。
  • 选项卡管理

    • setCurrentIndex(index): 设置当前显示的选项卡。
    • currentIndex(): 获取当前选中的选项卡的索引。
    • currentWidget(): 获取当前显示的小部件。
  • 选项卡样式

    • setTabShape(shape): 设置选项卡的形状(如矩形或圆角)。
    • setTabPosition(position): 设置选项卡的位置(如顶部、底部、左侧、右侧)。
    • setTabsClosable(closable): 设置选项卡是否可关闭。
    • setTabIcon(index, icon): 设置指定选项卡的图标。
  • 信号

    • tabChanged(int index): 当当前选项卡改变时发出信号。
    • tabCloseRequested(int index): 当请求关闭选项卡时发出信号。

 17 QPropertyAnimation 是 Qt 中用于动画化属性的类

  • 构造函数

    • QPropertyAnimation(QObject *target, const QByteArray &propertyName): 创建一个动画,指定目标对象和要动画化的属性名称。
    • 窗口属性:
    • geometry : 表示窗口部件的位置和大小

    • opacity : 表示控件的透明度。

  • 设置持续时间

    • void setDuration(int duration): 设置动画的持续时间(以毫秒为单位)。
  • 设置起始值和结束值

    • void setStartValue(const QVariant &value): 设置动画的起始值。
    • void setEndValue(const QVariant &value): 设置动画的结束值。
  • 设置当前值

    • void setCurrentTime(int msec): 设置动画当前的时间(用于手动控制)。
  • 设置缓动曲线

    • void setEasingCurve(const QEasingCurve &curve): 设置动画的缓动曲线(如线性、缓入、缓出等)。
  • 启动动画

    • void start(): 启动动画。
  • 暂停和恢复

    • void pause(): 暂停动画。
    • void resume(): 恢复暂停的动画。
  • 动画状态

    • QAbstractAnimation::State state() const: 获取当前动画的状态(如正在运行、暂停等)。
  • 连接信号

    • void finished(): 当动画结束时发出信号,可以连接自定义槽函数。

QPropertyAnimation *animation = new QPropertyAnimation(&myWidget, "pos");

animation->setDuration(1000);

animation->setStartValue(QPoint(0, 0));

animation->setEndValue(QPoint(100, 100));

animation->setEasingCurve(QEasingCurve::OutBounce);

animation->start();

18 QScopedPointer 是 Qt 框架中用于管理动态分配对象的智能指针类。它的主要功能是确保在超出作用域时自动释放其所持有的指针,从而避免内存泄漏。

QScopedPointer<MyClass> ptr(new MyClass());
它会自动管理 MyClass 类型的对象。由于是模板类,QScopedPointer 可以与各种类型一起使用,提供灵活的内存管理解决方案。

是一种局部的、自动释放的智能指针,通常用于在作用域结束时自动删除指针所指向的对象。

19  QList 是 Qt 框架中提供的一个模板类,专门用于存储和管理动态数组的数据类型。它是一个容器类,可以存储任意类型的对象,包括基本数据类型和自定义对象。

20 QTimer 是 Qt 中的一个类,用于定时执行某个操作。

  • 构造函数

    • QTimer(QObject *parent = nullptr):创建一个定时器,指定其父对象。
  • 启动定时器

    • void start(int msec):启动定时器,并设置超时时间(毫秒)。
    • void start():启动定时器,使用之前设置的超时时间。
  • 停止定时器

    • void stop():停止定时器。
  • 检查状态

    • bool isActive() const:返回定时器是否处于活动状态(即是否正在计时)。
  • 设置和获取超时时间

    • void setInterval(int msec):设置定时器的超时时间(毫秒)。
    • int interval() const:返回当前设置的超时时间(毫秒)。
  • 信号

    • void timeout():当定时器超时时发出此信号。

21 QTextCodec 是 Qt 框架中的一个类,主要用于处理文本编码

它可以帮助你在不同的字符编码之间转换文本,比如从 UTF-8 转换为 GBK 或 ISO-8859-1 等。

    QTextCodec *codec = QTextCodec::codecForName("UTF-8");//或者"GBK",不分大小写   
  • 这行代码通过 codecForName 函数获取名为 "UTF-8" 的编码器。
  • codecForName 函数可以接受编码名称(不区分大小写),返回对应的 QTextCodec 对象。如果指定的编码不存在,则返回 nullptr

    QTextCodec::setCodecForLocale(codec);

  • 这行代码将获取的 codec 设置为当前区域的编码。这意味着在本地化应用程序时,所有通过 QStringQByteArray 进行的文本操作将使用这个编码。
  • 这对于确保程序在不同语言和区域下正确显示和处理文本非常重

23 QScrollArea 是 Qt 框架中的一个类,用于提供一个可滚动的区域,允许用户查看超过视图窗口的内容。

  • 构造函数

    • QScrollArea(QWidget *parent = nullptr): 创建一个滚动区域。
  • 内容设置

    • void setWidget(QWidget *widget): 设置要在滚动区域中显示的控件。
    • QWidget* widget() const: 获取当前设置的控件。
  • 内容尺寸

    • void setWidgetResizable(bool resizable): 设置是否在调整滚动区域大小时自动调整内容控件的大小。
  • 滚动条控制

    • void setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy policy): 设置水平滚动条的显示策略。
    • void setVerticalScrollBarPolicy(Qt::ScrollBarPolicy policy): 设置垂直滚动条的显示策略。
    • QScrollBar* horizontalScrollBar() const: 获取水平滚动条。
    • QScrollBar* verticalScrollBar() const: 获取垂直滚动条。
  • 滚动位置

    • void ensureVisible(int x, int y, int xMargin = 0, int yMargin = 0): 确保指定的点在可视区域内。
    • void verticalScrollBar()->setValue(int value): 设置垂直滚动条的位置。
  • 尺寸管理

    • void setMinimumSize(const QSize &size): 设置最小尺寸。
    • void setMaximumSize(const QSize &size): 设置最大尺寸。

24 QTextStream 用于处理文本流的输入和输出,它提供了一种方便的方式来读取和写入文本数据,支持多种编码格式。

  • 构造函数

    • QTextStream(QIODevice *device): 使用指定的QIODevice(如QFile)初始化一个QTextStream对象。
  • 读取数据

    • QString readLine(): 读取一行文本。
    • QString readAll(): 读取整个文本流。
    • QString read(int maxLength): 读取最多maxLength个字符。
  • 写入数据

    • void operator<<(const QString &str): 将字符串写入流。
    • void operator<<(int i): 将整数写入流。
    • void operator<<(double d): 将浮点数写入流。
  • 设置和获取格式

    • void setCodec(const QString &codec): 设置字符编码,例如"UTF-8"
    • QString codec() const: 获取当前使用的编码。
  • 流状态

    • bool status() const: 获取流的状态。
    • void reset(): 重置流状态。
  • 控制流

    • void setFormat(QTextStream::FieldFormat format): 设置字段格式。
    • void setPadChar(QChar padChar): 设置填充字符。
QTextStream in(&file);
while(in.atEnd() == false) //atEnd()用于检查是否到达文件末尾。

 25 QStringList是 Qt 框架中的一个类,用于存储和操作字符串的列表。它是 QString 的一个列表(或数组),提供了一些便利的功能来处理多个字符串。

  • 构造和初始化:

    • QStringList(): 默认构造函数,创建一个空的字符串列表。
    • QStringList(const QStringList &list): 拷贝构造函数。
  • 添加和移除元素:

    • void append(const QString &str): 在列表末尾添加一个字符串。
    • void removeAt(int index): 移除指定索引的元素。
    • void clear(): 清空列表。
  • 访问元素:

    • QString at(int index) const: 获取指定索引的字符串。
    • QString first() const: 获取第一个元素。
    • QString last() const: 获取最后一个元素。
  • 查找和处理:

    • int indexOf(const QString &str) const: 查找字符串的位置。
    • QStringList split(const QString &separator) const: 根据分隔符分割字符串。

举例:

QStringList lineList = path3.split("-");
//path3.split("-") 将字符串 path3 根据 "-" 分隔符分割成多个子字符串,
//并返回一个 QStringList。lineList 中将包含所有以 "-" 分割出的部分。

二:容器类

1.QList

  • 描述:动态数组,支持存储任意类型的对象。
  • 常用接口
    • append(const T &value):添加元素。
    • insert(int index, const T &value):在指定位置插入元素。
    • removeAt(int index):删除指定位置的元素。
    • at(int index):访问指定位置的元素。
    • size():返回元素个数。

2. QVector

  • 描述:动态数组,优化了内存分配,通常比 QList 更高效。
  • 常用接口
    • push_back(const T &value):在末尾添加元素。
    • insert(int index, const T &value):在指定位置插入元素。
    • removeAt(int index):删除指定位置的元素。
    • operator[](int index):随机访问元素。

3. QMap

  • 描述:键值对的有序集合。
  • 常用接口
    • insert(const Key &key, const T &value):插入键值对。
    • remove(const Key &key):删除指定键的元素。
    • value(const Key &key):获取指定键的值。
    • keys():获取所有的键。

4. QHash

  • 描述:键值对的无序集合,基于哈希表实现。
  • 常用接口
    • insert(const Key &key, const T &value):插入键值对。
    • remove(const Key &key):删除指定键的元素。
    • value(const Key &key):获取指定键的值。
    • keys():获取所有的键。

5. QSet

  • 描述:存储唯一值的集合。
  • 常用接口
    • insert(const T &value):插入元素。
    • remove(const T &value):删除元素。
    • contains(const T &value):检查集合中是否包含指定元素。
    • size():返回集合中元素的个数。

6. QLinkedList

  • 描述:双向链表。
  • 常用接口
    • append(const T &value):在末尾添加元素。
    • prepend(const T &value):在开头添加元素。
    • remove(const T &value):删除指定元素。
    • first():获取第一个元素。

7.QVariant

是 Qt 框架中的一个类,主要用于存储不同类型的数据。它可以在运行时容纳多种数据类型,是 Qt 的类型安全的通用数据容器。QVariant 对象可以存储整数、浮点数、字符串、布尔值、以及自定义类型等。

  • 构造函数

    • QVariant():默认构造函数。
    • QVariant(const QVariant &other):复制构造函数。
    • QVariant(const T &value):模板构造函数,可以用于存储不同类型的数据。
  • 类型查询

    • int type() const:返回存储数据的类型(例如 QVariant::IntQVariant::String)。
    • bool isNull() const:检查 QVariant 是否为空。
  • 类型转换

    • template<typename T> T value() const:返回存储的值,转换为指定类型 T
    • QString toString() const:将 QVariant 转换为 QString
    • int toInt(bool *ok = nullptr) const:将 QVariant 转换为整数,返回值可以指示转换是否成功。
  • 赋值与比较

    • QVariant &operator=(const QVariant &other):赋值运算符。
    • bool operator==(const QVariant &other) const:比较两个 QVariant 是否相等。
    • bool operator!=(const QVariant &other) const:比较两个 QVariant 是否不相等。
  • 设置值

    • void setValue(const T &value):设置存储的值为指定类型。

三:TCP网络类

1 QTcpSocket:用于客户端与服务器之间的 TCP 通信,提供发送和接收数据的功能。

  • connectToHost(const QString &host, quint16 port):连接到指定的主机和端口。

  • write(const QByteArray &data):发送数据到连接的主机。

  • readAll():读取所有接收到的数据。

  • disconnectFromHost():断开与主机的连接。

  • error():获取最近的错误代码。

2 QTcpServer:用于创建 TCP 服务器,监听和接受客户端连接。

  • listen(const QHostAddress &address, quint16 port):开始监听指定的地址和端口。

  • nextPendingConnection():返回下一个待处理的客户端连接。

  • close():关闭服务器,停止监听

3 QAbstractSocket:QTcpSocket 和 QUdpSocket 的基类,提供网络套接字的基本功能和信号。

  • state():获取当前套接字的状态(如连接、断开等)。

  • errorString():返回最近的错误信息。

  • connected():信号,当套接字成功连接时发出

4 QHostAddress:表示主机地址(IPv4 和 IPv6)。

  • toString():将地址转换为字符串表示。

  • isNull():检查地址是否为空。

5 QNetworkInterface:提供网络接口的信息,例如 IP 地址和状态。

  • allAddresses():获取所有可用的 IP 地址。

  • hardwareAddress():获取网络接口的硬件地址(MAC 地址)。

QT项目记录:

在父类中声明子类界面的对象,并将父对象的this指针,作为参数给到子类对象,就可以将子类对象那个界面显示到父类界面。

但是在声明结构体的时候,一定要把初始化。p(new widgetprivate)

问题_Qss文件怎么使用:

// 加载样式表

QFile file(":/styles/style.qss");

// 假设样式表在资源文件中

file.open(QFile::ReadOnly);

QString styleSheet = file.readAll();

file.close();

// 应用样式表到整个应用

qApp->setStyleSheet(styleSheet);

// 或者应用到特定的窗口

yourMainWindow->setStyleSheet(styleSheet);

问题:QScrollArea是什么,QVBoxLayout是什么

QScrollArea:是可以滚动的区间
//取消掉水平和垂直放方向滚动条。
ui->scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);    
ui->scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

Qt中提升为自定义的类

QWidget 提升为自定义类(或称为“提升”)指的是在设计时使用 Qt Designer 或代码中,替换一个现有的 QWidget 控件为一个自定义的派生类。这样做的目的通常是为了扩展或定制控件的功能和外观。

将基类窗口提升为自定义的窗口,首先一个类只能提升一次,不能连续提升两次,如果要改变提升的窗口,要先将当前的窗口取消提升,然后再提升为其他的窗口,还有就是提升类要继承自提升的基类才能提升。这是对控件的扩展。

Qt中将次要界面设置为主要界面的两种方法:

一种是类的提升,还有一种将new一个自定义界面类的对象,并且将自定义对象的父类指针设置为主界面。

QT中自定义信号signals: void SongMessage(const QString& Song,const QString& singer);自定义的信号为什么还有参数?

自定义信号可以带参数,以便在信号发出时传递额外的信息。你的信号 SongMessage 带有两个参数 Songsinger,这意味着当这个信号被发出时,它可以传递当前播放的歌曲名称和歌手的信息。这样,接收这个信号的槽函数可以直接使用这些参数,进行相应的处理。信号的参数主要是传递给连接的槽函数。具体来说,当信号被发出时,它会将参数传递给所有连接到该信号的槽函数。

如果是lambda表达式,你可以直接使用这些信号发出来的参数[](const QString& song, const QString& singer) {});

QObject::connect(&player, &MusicPlayer::songMessage,

[ ](const QString& song, const QString& singer) { qDebug() << "Now playing:" << song << "by" << singer; // 处理信号 });

自定义信号是怎么发出来的?

是通过执行自定义中的某个函数方法来发出来的  
void musiclist::on_songlist_2_itemDoubleClicked(QListWidgetItem *item)
{QString SongName = static_cast<SongList*>(ui->songlist_2
->itemWidget(item))->GetSongName();QString SingerName = static_cast<SongList*>(ui->songlist_2
->itemWidget(item))->GetSongerName();qDebug()<<SongName<<" "<<SingerName;emit SongMessage(SongName,SingerName);
}

问题stackwidget控件中如何切换界面?

QStackedWidget

QStackedWidget 是一个容器类,允许在多个页面之间切换。它的每个页面可以是任意的 QWidget(如按钮、文本框等),但一次只能显示一个页面。

setCurrentIndex(int index)

  • 功能:这个函数设置当前显示的页面索引。
  • 参数index 是你希望显示的页面的索引(从 0 开始计数)。
  • 例子setCurrentIndex(0) 会显示第一个页面,setCurrentIndex(1) 会显示第二个页面,以此类推。
ui->stackedWidget->setCurrentIndex(0);//表示设置当前界面

QT问题积累:使用信号返回来的参数时,怎样在槽函数中使用这个参数

[signal] void QListWidget::itemClicked(QListWidgetItem *item) 这个信号返回了一个参数item连接这个信号
connect(ui->listWidget_1,&QListWidget::itemClicked,this,&Widget::setTab);我们如果想要使用这个参数的时候,可以直接在槽函数使用,不过槽函数的声明必须要接收这个参数,但是connect中的槽函数只需要引用名字即可。如上所示
槽函数如下:
void Widget::setTab(QListWidgetItem *item)
{int row=ui->listWidget_2->row(item);ui->stackedWidget->setCurrentIndex(row);
}

这里的槽函数需要接收这个signal信号这个返回的参数。

Qt问题积累当listwidget中的item设置的不是文本而是一个widget时,即使将item将item删除了,还是会留下widget?如何将item中设置widget呢。

如何将item中设置widget,答:

使用setItemWidget(item, widget)这个函数来进行设置,

并且还可以通过item->setSizeHint();来使得窗口行适应item行。这样可使得列表更加美观。

自定义 Widget 关联: 当你使用 setItemWidget(item, widget) 将一个 widget 设置为 item 的显示控件时,这个 widget 仍然存在于内存中。QListWidget 只管理 QListWidgetItem 的生命周期,而不直接管理与之关联的 widget。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB常用命令大全

文章目录 一、MongoDB简介二、服务启动停止备份三、数据库相关四、集合操作五、文档操作六、其他常用命令 一、MongoDB简介 MongoDB是一款流行的NoSQL数据库&#xff0c;以其灵活的文档模型、高可用性、易于扩展等特性而受到广泛关注。 MongoDB 是由C语言编写的&#xff0c;是…

【Java】stream流

什么是stream流 stream流可以通过简单的方式去处理一个数据集合&#xff0c;而不用通过冗杂的循环遍历 Stream中的元素是以Optional类型存在的 optional 允许元素为空 stream流有什么特性 stream不存储数据&#xff0c;而是按照特定的规则对数据进行计算&#xff0c;一般会输…

C# SM1、SM2、SM3、SM4如何使用

在中国&#xff0c;SM系列算法&#xff08;SM1、SM2、SM3、SM4&#xff09;是国家商用密码管理局发布的密码算法标准&#xff0c;广泛应用于信息安全领域。然而&#xff0c;需要注意的是&#xff0c;由于这些算法涉及国家安全和商业秘密&#xff0c;它们的实现细节和具体使用方…

【EXCELL技巧篇】使用Excel公式,获取当前 Excel的Sheet页的名字

【通知】&#xff1a; 正式跟大家说个难过的消息&#xff0c;本来在「中国朝代史」结束后&#xff0c;开启的下一个专栏「中国近代史」前面几期做的还好好的&#xff0c;可是今天起正式通知审核不过&#xff0c;因为一些原因。 其实我对于历史这一块我还是很感兴趣的&#xff0…

GB35114国密算法-GMSSL

C有个三方库-GMSSL是可以进行GB35114所需要的SM2、SM3、SM4等加解密算法的&#xff0c;但是使用国密算法是需要申请报备的 GmSSL是由北京大学自主开发的国产商用密码开源库&#xff0c;实现了对国密算法、标准和安全通信协议的全面功能覆盖&#xff0c;支持包括移动端在内的主流…

【YashanDB知识库】调整NUMBER精度,再执行统计信息收集高级包偶现数据库异常退出

【问题分类】功能使用 【关键字】NUMBER类型精度修改&#xff0c;统计信息收集 【问题描述】存量的表将NUMBER类型的字段精度从小精度调整为大精度时&#xff0c;数据库收集这张业务表的统计信息时&#xff0c;会导致数据库异常退出。 【问题原因分析】YashanDB NUMBER字段精…

工业三防平板可优化工厂流程管理

在当今高度自动化和数字化的工业生产环境中&#xff0c;工业三防平板正逐渐成为优化工厂流程管理的关键工具。其强大的功能和卓越的性能&#xff0c;为工厂带来了更高的效率、更低的成本以及更出色的质量控制。 工业三防平板&#xff0c;顾名思义&#xff0c;具备防水、防尘、防…

gradle学习及问题

一、下载安装 参考&#xff1a;https://blog.csdn.net/chentian114/article/details/123344839 1、下载Gradle并解压 安装包&#xff1a;gradle-6.7-bin.zip 可以在idea的安装目录查看自己适配的版本 路径&#xff1a;D:\IDEA2021.3\plugins\gradle\lib 下载地址&#xff1a…

Qcom平台通过Hexagon IDE 测试程序性能指导

Qcom平台通过Hexagon IDE 测试程序性能指导 1 安装Hexagon IDE工具2 测试工程2.1 打开Hexagon IDE2.2 新建工程2.3 添加测试案例2.3.1 方法一&#xff1a;新建2.3.2 方法二&#xff1a;拷贝 2.4 配置测试环境2.4.1 包含头文件2.4.2 添加程序优化功能(需先bulid一下)2.4.3 添加g…

SEO效果好的wordpress主题

Cyber赛博独立站wordpress主题&#xff0c;黄色风格的产品展示型外贸独立站wordpress建站模板。 https://www.jianzhanpress.com/?p7135 Nebula奈卜尤拉wordpress主题模板&#xff0c;适合搭建外贸独立站使用的wordpress主题。 https://www.jianzhanpress.com/?p7084 绿色简…

使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-标题菜单及游戏结束界面(九)

文章目录 开发思路标题菜单界面标题菜单脚本代码结束菜单界面结束菜单脚本代码 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击&#xff08;一&#xff09; 使用Godot4组件制作竖版太空射击游戏_2D卷轴飞机射击-激光组件&#xff08;二&#xff09; 使用Godot4组件制作竖版…

中英双语介绍一级市场(Primary Market)和二级市场(Secondary Market)

中文版 一级市场和二级市场是金融市场中的两个主要部分&#xff0c;分别对应证券发行和交易的不同阶段。 一级市场&#xff08;Primary Market&#xff09; 定义&#xff1a; 一级市场&#xff0c;又称新发行市场&#xff0c;是指证券首次发行和出售的市场。在一级市场中&am…

前端基础之JavaScript学习——变量、数据类型、类型转换

大家好&#xff0c;我是来自CSDN的博主PleaSure乐事&#xff0c;今天我们开始有关JS的学习&#xff0c;希望有所帮助并巩固有关前端的知识。 我使用的编译器为vscode&#xff0c;浏览器使用为谷歌浏览器&#xff0c;使用webstorm或其他环境效果几乎一样&#xff0c;使用系统自…

【JavaEE】HTTP(2)

&#x1f921;&#x1f921;&#x1f921;个人主页&#x1f921;&#x1f921;&#x1f921; &#x1f921;&#x1f921;&#x1f921;JavaEE专栏&#x1f921;&#x1f921;&#x1f921; &#x1f921;&#x1f921;&#x1f921;下一篇文章&#xff1a;【JavaEE】HTTP协议(…

ELK日志管理

文章目录 一、ELK概述什么是ELK?为什么使用ELK&#xff1f;ELK的工作原理 二、安装部署ELK前期准备安装部署Elasticsearch 软件修改系统配置安装插件在应用服务器上部署 Logstash安装 kibana 一、ELK概述 什么是ELK? 通俗来讲&#xff0c;ELK 是由 Elasticsearch、Logstash…

vue3+TS从0到1手撸后台管理系统

1.路由配置 1.1路由组件的雏形 src\views\home\index.vue&#xff08;以home组件为例&#xff09; 1.2路由配置 1.2.1路由index文件 src\router\index.ts //通过vue-router插件实现模板路由配置 import { createRouter, createWebHashHistory } from vue-router import …

集合媒体管理、分类、搜索于一体的开源利器:Stash

Stash&#xff1a;强大的媒体管理工具&#xff0c;让您的影音生活井井有条- 精选真开源&#xff0c;释放新价值。 概览 Stash是一个专为个人媒体管理而设计的开源工具&#xff0c;基于 Go 编写&#xff0c;支持自部署。它以用户友好的界面和强大的功能&#xff0c;满足了现代用…

每日刷题(cf)

目录 1.C. Increasing Sequence with Fixed OR 2.C. Jellyfish and Green Apple 3.B. Jellyfish and Game 1.C. Increasing Sequence with Fixed OR Problem - C - Codeforces 题目要求我们构造一个最长的序列&#xff0c;使得任意相邻两个元素按位或等于n&#xff0c;我们对…

网络安全-网络安全及其防护措施5

21.互联网交换点&#xff08;ISP) IXP的定义和作用 互联网交换点&#xff08;IXP&#xff09;是一个物理基础设施&#xff0c;通过它&#xff0c;互联网服务提供商&#xff08;ISP&#xff09;和内容提供商可以互相交换互联网流量。IXP的目的是提高网络性能、降低带宽成本和减…

【源码阅读】osproxy对象存储分布式代理(1)

osproxy 项目地址 osproxy是一个使用Go语言开发的对象存储分布式代理(object-storage-distributed-proxy)&#xff0c;可以作为文件存储微服务&#xff0c;文件会在服务中转处理后再对接到对象存储&#xff0c;包括但不限于以下功能&#xff1a; 分布式uid及秒传&#xff0c;…