349 字
1 分钟
【QT】对话框与常用控件
标准对话框
QFileDialog
打开单个文件
QString QFileDialog::getOpenFileName( QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());| 参数 | 说明 |
|---|---|
parent | 父窗口 |
caption | 标题 |
dir | 初始目录 |
filter | 过滤器;多组用 ;; 分隔,同组多后缀用空格,如 文本(*.txt);;图片(*.jpg *.png) |
selectedFilter | 用户选中的过滤器(可选) |
| 返回值 | 选中文件路径;取消则为空字符串 |
void Dialog::on_btnOpen_clicked(){ QString curPath = QDir::currentPath(); QString dlgTitle = "选择一个文件"; QString filter = "文本文件(*.txt);;图片文件(*.jpg *.gif *.png);;所有文件(*.*)"; QString fileName = QFileDialog::getOpenFileName(this, dlgTitle, curPath, filter); if (!fileName.isEmpty()) ui->plainTextEdit->appendPlainText(fileName);}打开多个文件
QStringList files = QFileDialog::getOpenFileNames( this, "选择多个文件", QDir::homePath(), "文本(*.txt);;所有(*.*)");保存文件
QString path = QFileDialog::getSaveFileName( this, "保存", QDir::currentPath(), "文本(*.txt);;所有(*.*)");if (!path.isEmpty()) { // 写入文件}选择已有目录
QString QFileDialog::getExistingDirectory( QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly);QString dir = QFileDialog::getExistingDirectory( this, "选择目录", QDir::homePath(), QFileDialog::ShowDirsOnly);QColorDialog
QColor color = QColorDialog::getColor(Qt::white, this, "选择颜色");if (color.isValid()) ui->widget->setStyleSheet(QString("background:%1").arg(color.name()));QFontDialog
bool ok;QFont font = QFontDialog::getFont(&ok, QFont("微软雅黑", 12), this);if (ok) ui->label->setFont(font);QInputDialog
QString text = QInputDialog::getText(this, "输入", "姓名:");int n = QInputDialog::getInt(this, "输入", "数量:", 1, 0, 100, 1);double d = QInputDialog::getDouble(this, "输入", "比例:", 0.5, 0, 1, 2);QString item = QInputDialog::getItem(this, "选择", "城市:", {"北京", "上海", "广州"}, 0, false);QMessageBox
QMessageBox::information(this, "提示", "操作成功");QMessageBox::warning(this, "警告", "磁盘空间不足");QMessageBox::critical(this, "错误", "无法打开文件");
auto ret = QMessageBox::question(this, "确认", "确定删除?", QMessageBox::Yes | QMessageBox::No);if (ret == QMessageBox::Yes) { /* ... */ }
// 自定义按钮QMessageBox box(this);box.setWindowTitle("退出");box.setText("是否保存?");box.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);box.setDefaultButton(QMessageBox::Save);常用控件分类(Designer 面板)
Buttons
| 控件 | 说明 |
|---|---|
QPushButton | 普通按钮 |
QToolButton | 工具栏按钮,可带菜单 |
QRadioButton | 单选,同组互斥 |
QCheckBox | 复选框 |
QCommandLinkButton | 向导式大按钮 |
Input Widgets
| 控件 | 说明 |
|---|---|
QLineEdit | 单行文本 |
QTextEdit / QPlainTextEdit | 多行富文本 / 纯文本 |
QSpinBox / QDoubleSpinBox | 整数 / 浮点调节 |
QComboBox | 下拉框 |
QDateEdit / QTimeEdit / QDateTimeEdit | 日期时间 |
QSlider / QDial | 滑块 / 旋钮 |
Display Widgets
| 控件 | 说明 |
|---|---|
QLabel | 文本或图片 |
QLCDNumber | 数码管显示 |
QProgressBar | 进度条 |
Containers
| 控件 | 说明 |
|---|---|
QGroupBox | 分组框 |
QTabWidget | 选项卡 |
QStackedWidget | 多页堆叠,一次显示一页 |
QScrollArea | 可滚动区域 |
QMdiArea | MDI 子窗口区域 |
QToolBox | 工具箱式折叠页 |
Item Views(Model-Based)
数据与视图分离,适合大数据量:
| 控件 | 常用模型 |
|---|---|
QListView | QStringListModel、QStandardItemModel |
QTreeView | 树形 QStandardItemModel |
QTableView | QSqlTableModel、QStandardItemModel |
QColumnView | 列式导航 |
Item Widgets(Item-Based)
项直接挂在控件上,适合少量静态数据:
| 控件 | 说明 |
|---|---|
QListWidget | 列表 |
QTreeWidget | 树 |
QTableWidget | 表格 |
与 .ui 文件配合
Designer 生成的 ui_*.h 提供 setupUi(this),控件通过 ui->objectName 访问。槽函数命名 on_<objectName>_<signal>() 可被 QMetaObject::connectSlotsByName 自动连接(需在含 Q_OBJECT 的类中)。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
【QT】对话框与常用控件
https://lysj.work/posts/studynotes/qt/qt对话框与常用控件/ 部分信息可能已经过时
相关文章 智能推荐
1
【QT】布局与QSS
StudyNotes 介绍 QHBoxLayout 等布局管理、QSS 选择器语法及与 QPalette、QStyle 的关系。
2
【QT】交叉编译与部署
StudyNotes 以 NXP i.MX 为例说明交叉工具链配置、Qt Creator Kits 及嵌入式板端部署要点。
3
【QT】信号槽与事件
StudyNotes 讲解信号与槽的 connect 写法、连接类型、事件处理与 eventFilter 及 QTimer 定时器。
4
【QT】入门与构建
StudyNotes 介绍 Qt 事件循环、链接库、qmake/CMake 构建及 MOC/UIC/RCC 编译流程与跨平台原理。
5
【QT】核心类型与容器
StudyNotes 介绍 QObject 对象树、QString、顺序与关联容器及迭代遍历方式。
