当前位置: 首页 > news >正文

Text Edit + ComboBox 属性(2)

文章目录

  • Text Edit
    • 1. 代码示例
    • 2. 核心属性
    • 3. 核心信号
  • ComboBox
    • 1. 代码示例
    • 2. 核心属性
    • 3. 核心方法
    • 4. 核心信号

Text Edit

QTextEdit表示多行输入框,也是一个富文本,markdown编辑器,并且能在内容超出编辑框范围时自动提供滚动条

QPlainTextEdit只能表示纯文本(Plain Text),QTextEdit不仅能表示纯文本,还可以表示htmlmarkdown

1. 代码示例

编辑widget.ui文件,创建一个labelText Edit控件,右键Text Edit控件,转到槽,选择textChanged信号去定义槽函数

在这里插入图片描述

// widget.cpp
void Widget::on_textEdit_textChanged()
{// 获取到多行输入框中的内容,将该内容设置到label上const QString& text = ui->textEdit->toPlainText();ui->label->setText(text);
}

在这里插入图片描述

2. 核心属性

属性名说明
markdown输入框内持有的内容。支持 Markdown 格式,能够自动将 Markdown 文本渲染成 HTML
html输入框内持有的内容。可以支持大部分 HTML 标签,包括 imgtable
placeHolderText输入框为空时提示的内容
readOnly是否是只读的
undoRedoEnable是否开启撤销/重做(undo/redo)功能
按下 Ctrl + z 触发 undo
按下 Ctrl + y 触发 redo
autoFormating开启自动格式化
tabstopWidth按下缩进占多少空间
overwriteMode是否开启覆盖写模式
acceptRichText是否接收富文本内容
verticalScrollBarPolicy垂直方向滚动条的出现策略:
Qt::ScrollBarAsNeeded:根据内容自动决定是否需要滚动条(默认值)
Qt::ScrollBarAlwaysOff:总是关闭滚动条
Qt::ScrollBarAlwaysOn:总是显示滚动条
horizontalScrollBarPolicy水平方向滚动条的出现策略:
Qt::ScrollBarAsNeeded:根据内容自动决定是否需要滚动条(默认值)
Qt::ScrollBarAlwaysOff:总是关闭滚动条
Qt::ScrollBarAlwaysOn:总是显示滚动条

3. 核心信号

信号名说明
textChanged()文本内容改变时触发
selectionChanged()选中范围改变时触发
cursorPositionChanged()光标移动时触发
undoAvailable(bool)可以进行 undo 操作时触发
redoAvailable(bool)可以进行 redo 操作时触发
copyAvailable(bool)文本被选中或取消选中时触发

演示QTextEdit的这几个信号,textChanged信号

在这里插入图片描述

selectionChanged信号,这里按住键盘上的shift键 + 左右方向键,可以逐个选中内容(多行内容,也可以按上下方向键进行选中)

在这里插入图片描述

cursorPositionChanged()

在这里插入图片描述

剩余三个信号:undo, redo, copy + Available,哪个是true按下组合键就有效,比如说undoAvailable: fasle,按下ctrl + z就无法撤销

在这里插入图片描述

void Widget::on_textEdit_textChanged()
{qDebug() << "textChanged: " << ui->textEdit->toPlainText();
}void Widget::on_textEdit_selectionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "selectionChanged: " << cursor.selectedText();
}void Widget::on_textEdit_cursorPositionChanged()
{QTextCursor cursor = ui->textEdit->textCursor();qDebug() << "cursorPositionChanged: " << cursor.position();
}void Widget::on_textEdit_redoAvailable(bool b)
{qDebug() << "redoAvailabel: " << b;
}void Widget::on_textEdit_undoAvailable(bool b)
{qDebug() << "undoAvailable: " << b;
}void Widget::on_textEdit_copyAvailable(bool b)
{qDebug() << "copyAvailable: " << b;
}

ComboBox

QComboBox表示一个下拉框

在这里插入图片描述

1. 代码示例

使用下拉框模拟麦当劳点餐。首先在界面上创建三个下拉框,三个label标签和一个提交按钮

在这里插入图片描述

接下来往下拉框中添加文本内容,有两种方式,先来看第一种代码方式,编辑widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->comboBox->addItem("麦辣鸡腿堡");ui->comboBox->addItem("巨无霸");ui->comboBox->addItem("双层牛堡");ui->comboBox_2->addItem("薯条");ui->comboBox_2->addItem("麦乐鸡块");ui->comboBox_2->addItem("麦乐鸡翅");ui->comboBox_3->addItem("百事可乐");ui->comboBox_3->addItem("雪碧");
}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_clicked()
{// 当用户选中完成后,点击提交按钮,打印出用户的选择qDebug() << ui->comboBox->currentText() << ", "<< ui->comboBox_2->currentText() << ", "<< ui->comboBox_3->currentText();
}

在这里插入图片描述

往下拉框添加文本内容,第二种方式,右键下拉框,编辑项目,直接在界面上添加。与上面代码的效果是相同的

在这里插入图片描述

但是在实际应用中,下拉框里面的内容很多时候并不是代码中写死的,而是通过文件或网络加载数据得到的(比如选课操作)

从文件中读取下拉框文本内容的实现方法如下:

还是先来最简单的操作,编辑widget.ui,在界面上创建一个label和下拉框控件

在这里插入图片描述

在本地新建一个名称为data(任意取)的文本文件,要能找到该文件的路径,后面写代码读取文件要用,后续从文件中读取文本内容时,路径后面要跟上文件名(包括后缀),将\改为/

在这里插入图片描述

在编辑widget.cpp源文件前,需要补充文件读写相关的知识。C语言使用fopen函数进行操作,而C++则提供了fstream类来实现这一功能

fstream类可分为ifstream(输入流类)和ofstream(输出流类)。关于文件输入(input)和输出(output)的区分:输入指从文件读取数据到程序,输出则是将程序数据写入文件

在这里插入图片描述

ui->comboBox->addItem(),这个函数要求的参数类型是QString,并不是std::string,虽然都是字符串,但它们是不同的类型

此处就需要进行手动转换,QString::fromStdString(line),就可以将std::string转换成QString

QString s; s.toStdString();可以将QString转换成std::string

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include<fstream>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 需要读取文件内容,把文件中的每一行读取出来,作为一个ComboBox选项std::ifstream file("D:/Qt proc_position/ComboBox_2/data.txt"); // 将"/"改成"\"if (!file.is_open()){qDebug() << "文件打开失败";exit(-1);}// getline函数按行来读取文本内容std::string line;while (std::getline(file, line)){// 取到的每一行内容,设置到下拉框中ui->comboBox->addItem(QString::fromStdString(line));}file.close();// 记得关闭文件
}Widget::~Widget()
{delete ui;
}

在这里插入图片描述

2. 核心属性

属性名说明
currentText当前选中的文本。
currentIndex当前选中的条目索引(从0开始)。
若无选中项,值为-1
editable是否允许用户修改文本。
设为true时,行为接近QLineEdit,可设置验证器validator
iconSize下拉框图标(小三角)的尺寸(像素)。
maxCount允许的最大条目数量。

3. 核心方法

方法名说明
addItem(const QString &)添加一个条目到列表末尾。
currentIndex()获取当前选中的条目索引(从0开始)。
若无选中项,返回-1
currentText()获取当前选中的条目文本。

4. 核心信号

信号名说明
activated(int)当用户选择了一个选项时发出,参数为选项索引。
activated(const QString &text)当用户点开下拉框并鼠标划过某个选项时发出,此时尚未确认选择,参数为选项文本。
currentIndexChanged(int)当前选项改变时发出,参数为新选项索引。
currentIndexChanged(const QString &text)当前选项改变时发出,参数为新选项文本。
用户或程序操作都会触发。
editTextChanged(const QString &text)当编辑框中的文本改变时发出(仅editable=true时有效)。
http://www.dtcms.com/a/297854.html

相关文章:

  • SpringBoot(黑马)
  • Ansible自动化运维工具详解
  • n8n插件增加repeat_penalty参数适配Qwen3
  • HCIA再复习
  • 3款好用的服装外贸系统对比分析
  • 蜘蛛强引的原理与百度SEO的关系
  • 无人机视觉模块技术解析
  • 【算法-图论】图的存储
  • Gitee Test:国产软件测试平台如何筑牢关键领域数字安全屏障
  • 【SpringAI实战】ChatPDF实现RAG知识库
  • 二重循环之在ATM上取款
  • 【vue3+vue-pdf-embed】实现PDF+图片预览
  • InfluxDB Line Protocol 协议深度剖析(二)
  • Ubuntu 22.04 使用 Issac Gym 进行人形强化学习训练
  • ip link show 查看/配置网络接口
  • keepalived篇
  • Spring Cloud微服务项目完整搭建指南
  • ODFM(正交频分复用)系统中加入汉明码(Hamming Code)的主要目的是增强抗误码能力,通过**前向纠错(FEC)**机制提高传输可靠性
  • 详解FreeRTOS开发过程(八)-- 时间标志
  • 相机ROI 参数
  • 【飞控】在 Windows 中为PX4自动驾驶仪安装 UAV 工具箱支持包
  • Python 程序设计讲义(19):选择结构程序设计
  • 架构篇(一):告别MVC/MVP,为何“组件化”是现代前端的唯一答案?
  • [2025CVPR-图象分类方向]CATANet:用于轻量级图像超分辨率的高效内容感知标记聚合
  • Git常用命令赏析
  • Spring Boot 优雅实现多租户架构!
  • 谁将统治AI游戏时代?腾讯、网易、米哈游技术暗战
  • 基于Android的2048休闲益智游戏App
  • 上位机程序开发基础介绍
  • 大型微服务项目:听书——11 Redisson分布式布隆过滤器+Redisson分布式锁改造专辑详情接口