【Qt】Qt核心控件与常用函数

Qt 提供了丰富的控件(Widgets)和功能强大的类库。

一、 常用控件 (Widgets)

  1. 基础控件:

    • QPushButton (按钮): 最常用的按钮,用于触发动作。常用信号:clicked()
    • QLabel (标签): 显示文本、图像或动画。常用方法:setText(), setPixmap()
    • QLineEdit (单行文本框): 用于输入和编辑单行文本。常用信号:textChanged(const QString &), returnPressed(), editingFinished()。常用方法:text(), setText(), clear()
    • QTextEdit (多行富文本编辑器): 用于输入和显示多行纯文本或富文本。功能比 QLineEdit 强大得多。
    • QPlainTextEdit (多行纯文本编辑器): 专门用于处理纯文本,性能通常优于 QTextEdit
    • QCheckBox (复选框): 表示二选一的状态(选中/未选中)。常用信号:stateChanged(int)。常用方法:isChecked(), setChecked()
    • QRadioButton (单选按钮): 一组中只能选择一个。通常放入 QButtonGroup 管理互斥性。常用信号和方法类似 QCheckBox
    • QComboBox (组合框/下拉列表框): 提供一个下拉列表供用户选择。常用信号:currentIndexChanged(int), currentTextChanged(const QString &)。常用方法:addItem(), currentIndex(), currentText(), setCurrentIndex()
    • QSpinBox (整数调节框): 输入或通过上下箭头调节整数值。常用信号:valueChanged(int)。常用方法:value(), setValue(), setRange()
    • QDoubleSpinBox (浮点数调节框): 输入或通过上下箭头调节浮点数值。类似 QSpinBox
    • QSlider (滑块): 通过拖动滑块在一个范围内选择值(水平或垂直)。常用信号:valueChanged(int)。常用方法:value(), setValue(), setRange()
    • QProgressBar (进度条): 显示任务的进度。常用方法:setValue(), setRange(), setMinimum(), setMaximum()
  2. 容器/布局控件:

    • QFrame (框架): 带有边框的基础控件,常用于组合其他控件或绘制简单图形。
    • QGroupBox (分组框): 带有标题和边框的容器,用于逻辑分组相关控件。
    • QTabWidget (标签页控件): 通过标签页组织多个子界面(QWidget)。
    • QStackedWidget (堆叠控件): 一次只显示一个子控件,可以通过代码切换。
    • QToolBox (工具箱): 提供一系列可展开/折叠的页面。
    • QDockWidget (停靠窗口): 可以停靠在主窗口边缘或作为浮动窗口的容器。
    • QScrollArea (滚动区域): 为内部的小部件提供滚动条,当内容超出可视区域时使用。
    • QMainWindow (主窗口): 应用程序的主窗口框架,通常包含菜单栏(QMenuBar)、工具栏(QToolBar)、状态栏(QStatusBar)、中心部件(centralWidget)和停靠部件(QDockWidget)区域。
    • QDialog (对话框): 模态或非模态对话框的基类。常用子类有 QFileDialog, QColorDialog, QFontDialog, QMessageBox, QInputDialog 等。
    • QMessageBox (消息框): 显示提示、警告、错误信息或进行简单确认。常用静态方法:information(), warning(), critical(), question(), about()
    • QFileDialog (文件对话框): 用于选择文件或目录。常用静态方法:getOpenFileName(), getOpenFileNames(), getSaveFileName(), getExistingDirectory()
    • 布局管理器 (Layout Managers):
      • QHBoxLayout (水平布局): 从左到右水平排列控件。
      • QVBoxLayout (垂直布局): 从上到下垂直排列控件。
      • QGridLayout (网格布局): 将控件排列在网格的行和列中。
      • QFormLayout (表单布局): 特别适合两列(标签-字段)的表单界面。
      • QStackedLayout (堆叠布局): 一次只显示一个控件。
  3. 高级/数据展示控件:

    • QListView (列表视图): 使用列表模型(QAbstractItemModel)显示数据项。
    • QTreeView (树视图): 使用树模型(QAbstractItemModel)显示层次结构数据。
    • QTableView (表格视图): 使用表格模型(QAbstractTableModel)显示表格数据。
    • QListWidget (列表部件): 简化版的列表视图,自带基于项的模型(QListWidgetItem)。
    • QTreeWidget (树部件): 简化版的树视图,自带基于项的模型(QTreeWidgetItem)。
    • QTableWidget (表格部件): 简化版的表格视图,自带基于项的模型(QTableWidgetItem)。
    • QGraphicsView (图形视图): 强大的 2D 图形框架的核心视图部件,用于显示 QGraphicsScene 中的大量 2D 图形项(QGraphicsItem)。
  4. 其他实用控件:

    • QDateEdit / QDateTimeEdit / QTimeEdit: 用于输入日期、日期时间或时间。
    • QDial (表盘): 圆形旋转控件。
    • QLCDNumber (LCD 数字显示): 显示类似 LCD 的数字。
    • QSplitter (分割器): 允许用户通过拖动分隔条调整子控件的大小。
    • QMenu (菜单): 菜单栏或上下文菜单中的菜单。
    • QToolBar (工具栏): 包含工具按钮或其他控件的工具栏。
    • QStatusBar (状态栏): 显示应用程序状态信息的区域(通常在窗口底部)。

二、 常用核心函数 (跨越多个类)

Qt 的功能远不止控件,其核心类库提供了丰富的功能。以下是一些极其常用的函数(通常属于 QObject, QWidget, QString, QFile 等核心类):

  1. 对象生命周期与信号槽 (Qt 核心机制):

    • QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection): 连接信号 (signal) 和槽 (method)。这是 Qt 事件驱动编程的核心。
    • QObject::disconnect(...): 断开信号槽连接。
    • QObject::sender(): 在槽函数中获取发出信号的对象的指针。
    • QObject::objectName() / setObjectName(const QString &): 获取/设置对象的名称(常用于 findChild)。
    • QObject::findChild(const QString &name = QString()): 在子对象中查找指定类型和名称的对象。
    • QObject::findChildren(const QString &name = QString()): 在子对象中查找所有指定类型和名称的对象。
    • QObject::deleteLater(): 安排对象在事件循环安全时删除(避免在事件处理过程中直接 delete)。
  2. 窗口与控件操作 (QWidget 及其子类):

    • show(): 显示窗口或控件(非模态)。
    • hide(): 隐藏窗口或控件。
    • setVisible(bool): 设置可见性。
    • close(): 关闭窗口(可能触发 closeEvent)。成功关闭返回 true
    • setWindowTitle(const QString &): 设置窗口标题。
    • resize(int w, int h) / resize(const QSize &): 调整大小。
    • setMinimumSize(int minw, int minh) / setMaximumSize(int maxw, int maxh) / setFixedSize(int w, int h): 设置大小约束。
    • move(int x, int y) / move(const QPoint &): 移动位置。
    • setEnabled(bool): 启用/禁用控件(影响交互)。
    • setFocus(): 设置键盘焦点到该控件。
    • update() / repaint(): 请求重绘控件(update 更常用,更高效)。
    • setStyleSheet(const QString &styleSheet): 设置控件的 Qt 样式表 (QSS) 进行美化。
    • exec() (QDialog): 以模态方式显示对话框并阻塞直到关闭。
  3. 字符串处理 (QString):

    • append(const QString &) / operator+=: 追加字符串。
    • arg(): 格式化字符串(类似 printf%1, %2)。
    • at(int i) / operator[]: 获取指定位置的字符。
    • contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive): 是否包含子串。
    • isEmpty() / isNull(): 判断是否为空/null。
    • left(int n) / right(int n) / mid(int position, int n = -1): 提取子串。
    • length() / size(): 获取长度。
    • number(int / long / double / ...): 静态方法,将数字转换为 QString
    • toInt(bool *ok = nullptr, int base = 10) / toDouble(bool *ok = nullptr) / toFloat(bool *ok = nullptr) / toLongLong(...): 转换为数值。
    • toLower() / toUpper(): 转换为小写/大写。
    • trimmed(): 移除两端空白。
    • simplified(): 移除两端空白并用单个空格替换内部连续空白。
    • split(const QString &sep, Qt::SplitBehavior behavior = Qt::KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive): 按分隔符分割字符串成列表 (QStringList)。
    • sprintf(const char *cformat, ...): (已废弃,推荐用 QString::arg()QTextStream) 类似 C 的 sprintf
  4. 文件与目录操作 (QFile, QDir, QFileInfo):

    • QFile::open(QIODevice::OpenMode mode): 打开文件(ReadOnly, WriteOnly, ReadWrite, Append, Text 等)。
    • QFile::read(qint64 maxSize) / readAll() / readLine(qint64 maxSize = 0): 读取文件内容。
    • QFile::write(const QByteArray &data) / write(const char *data, qint64 len): 写入数据。
    • QFile::close(): 关闭文件。
    • QFile::exists(): 静态方法,检查文件是否存在。
    • QFile::remove(): 删除文件。
    • QDir::currentPath(): 静态方法,获取当前工作目录。
    • QDir::setCurrent(const QString &path): 静态方法,设置当前工作目录。
    • QDir::mkdir(const QString &dirName): 创建目录。
    • QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort): 获取目录下的条目列表。
    • QFileInfo::exists() / isFile() / isDir() / size() / path() / absolutePath() / fileName() / baseName() / suffix(): 获取文件/目录信息。
  5. 时间与日期 (QDateTime, QDate, QTime, QTimer):

    • QDateTime::currentDateTime(): 获取当前日期时间。
    • QDate::currentDate(): 获取当前日期。
    • QTime::currentTime(): 获取当前时间。
    • toString(const QString &format): (QDateTime, QDate, QTime) 按格式转换为字符串 (如 “yyyy-MM-dd hh:mm:ss”)。
    • QTimer::singleShot(int msec, const QObject *receiver, const char *member): 单次定时器。
    • QTimer::start(int msec) / stop(): (创建 QTimer 对象后) 启动/停止定时器。信号:timeout()
  6. 容器类 (QList, QVector, QMap, QHash, QSet):

    • append(const T &value) / push_back(const T &value): 添加元素到末尾。
    • prepend(const T &value) / push_front(const T &value): 添加元素到开头。
    • insert(int i, const T &value): 在指定位置插入元素。
    • removeAt(int i) / removeFirst() / removeLast(): 移除元素。
    • at(int i) / operator[]: 访问元素。
    • size() / count() / length(): 获取元素数量。
    • isEmpty(): 判断是否为空。
    • contains(const T &value): (QList, QVector, QSet) 判断是否包含某个值。
    • value(const Key &key) / operator[](const Key &key): (QMap, QHash) 通过键访问值。
    • insert(const Key &key, const T &value): (QMap, QHash) 插入键值对。
    • remove(const Key &key): (QMap, QHash) 移除键值对。
    • keys() / values(): (QMap, QHash) 获取所有键或所有值的列表。
    • clear(): 清空容器。
  7. 网络 (QNetworkAccessManager, QNetworkRequest, QNetworkReply):

    • QNetworkAccessManager::get(const QNetworkRequest &request) / post(...) / put(...) / deleteResource(...): 发起 HTTP 请求,返回 QNetworkReply*
    • QNetworkReply::readyRead(): 信号,当有数据可读时发出。
    • QNetworkReply::readAll() / read(qint64 maxSize): 读取响应数据。
    • QNetworkReply::finished(): 信号,当请求完成时发出(无论成功失败)。
    • QNetworkReply::error(): 信号,当请求出错时发出。
    • QNetworkReply::abort(): 中止请求。
  8. 绘图 (QPainter):

    • begin(QPaintDevice *device): 开始在设备(如 QWidget, QPixmap, QImage)上绘图。
    • end(): 结束绘图。
    • setPen(const QPen &pen): 设置画笔(用于画线、轮廓)。
    • setBrush(const QBrush &brush): 设置画刷(用于填充)。
    • setFont(const QFont &font): 设置字体。
    • drawLine(...) / drawRect(...) / drawEllipse(...) / drawArc(...) / drawPolygon(...) / drawText(...) / drawPixmap(...) / drawImage(...): 绘制各种图形、文本和图像。

三、 常用工具类与模块

  • Qt Designer: 可视化界面设计工具,生成 .ui 文件。
  • uic (User Interface Compiler):.ui 文件编译成 C++ 头文件(如 ui_xxx.h)。
  • moc (Meta-Object Compiler): Qt 的元对象编译器,处理信号槽、属性等元信息,生成 moc_xxx.cpp 文件。这是 Qt 信号槽机制的基础。
  • qmake: Qt 的项目构建工具,根据 .pro 文件生成 Makefile 或其他构建系统的文件。
  • Qt Creator: Qt 官方的集成开发环境 (IDE)。
  • Qt Core: 提供核心的非 GUI 功能(信号槽、容器、文件 IO、线程等)。
  • Qt GUI: 提供基础的 GUI 组件(窗口、绘图、OpenGL 集成等)。
  • Qt Widgets: 提供丰富的控件集(上面列出的控件大部分在此模块)。
  • Qt Network: 提供网络编程支持(TCP, UDP, HTTP 等)。
  • Qt SQL: 提供数据库访问支持。
  • Qt Multimedia: 提供多媒体功能(音频、视频播放)。
  • Qt Quick (QML): 声明式语言和引擎,用于构建现代、流畅的 UI 和动态内容。

你可能感兴趣的:(Qt基础,qt,开发语言)