Qt输入窗口部件编程(二)--文本编辑框

本文介绍了一个使用QLineEdit、QTextEdit和QPlainTextEdit的综合例程,展示了如何创建一个带有小键盘的界面,用于输入文本。小键盘利用QVector和QList存储按钮信息,适应Qt4和Qt5的不同版本。代码经过测试并可在不同系统上运行。


前言

本文用三个文本输入框QLineEdit、QTextEdit、QPlainTextEdit的共性,写了一个综合例子,初步介绍它们的使用,至于它们各自的特性,会在后面的其他例程涉及到时再详细阐述。本文还通过设计一个小键盘,介绍Qt两个重要的容器类:QVector动态数组和QList可变长度数组。
本例程设计是在chatgpt的帮助下完成的,编译代码经过测试通过。

感谢朋友提供的chatgpt软件,特别是其中的gpt-box桌面工具,更是我离不开的工具。感兴趣的同仁可前往一观( www.apsuai.com)。

我们的调试环境仍然是双架构Kits,编译调试在当前的ubuntu(qt5)中进行,重新编译后下载到目标arm设备(qt4)中运行。
我们的编程环境为:Ubuntu64位系统(22.04),目标架构:
(1) qt5 x86_64 架构;
(2)qt4 32位arm架构。
环境配置请参见《Qt常用的按钮控件编程(一)》第1节。


3、文本编辑框例程

3.1 文本编辑框简介

QLineEdit、QTextEdit、QPlainTextEdit分别是Qt中常用的三种文本编辑框。

QLineEdit是仅支持单行文本输入的小部件,非常适合使用在需要简单文本输入的场景中,如输入标题、用户名和密码等。

QTextEdit是相对于QLineEdit更加灵活的文本编辑部件,支持大范围的多格式文本输入,同时支持添加图片、表格等富文本编辑功能。通常在需要处理较多文本的情况下使用,如编辑HTML文本、XML文本等等。

QPlainTextEdit是一种仅显示纯文本内容,不支持富文本编辑的多行文本编辑框。它适合用来在应用程序界面中显示或编辑程序输出、日志信息等文本信息。

三者的主要区别在于支持的文本格式、文本数量和使用程度等方面:QLineEdit仅支持单行文本输入,QPlainTextEdit支持多行文本输入,而QTextEdit支持多媒体(音频、视频)以及特定格式的文本(HTML、XML等)输入。

此外,QLineEdit和QPlainTextEdit的内容只能以纯文本方式导出,QTextEdit则支持丰富的导出选项包括HTML等。

在使用上,三者都可以通过继承和重载等方式添加个性化的功能,也可以通过QWidget的QSS样式设置修改样式风格。同时,根据需要,我们还可以通过Qt提供的API,支持在文本中高亮、根据关键字自动调整宽度等等。

3.2 例程功能设计

向chatgpt提问过程

  • 第一次提问:
    “给出一个qt c++ 程序设计:Line Edit:单行编辑框、Text Edit:文本编辑框、Plain Text Edit:纯文本编辑框, 请做这三个控件的综合例子,弹出一个可输入0~10,“.”,小写英文,大写英文的小键盘,用来向这些文本框中输入内容。”

由于chatgpt给出的程序设计小键盘中的按钮都被孤立的一个一个定义,程序显得非常繁琐,因此用下面的提问,要求重写:

  • 第二次提问:
    “上面的代码可不可以用数组来表示0~10,“.”,小写英文,大写英文,重新优化写一下?”

这次的答案相对满意。经过调整,得到我们程序例程。

3.3 例程执行效果

功能描述:
Line Edit:单行编辑框、Text Edit:文本编辑框、Plain Text Edit:纯文本编辑框综合例程。
在主窗口上,安放三个文本框,下部是一个包含0~10,“.”,小写英文,大写英文的小键盘。按下其中的按钮,结果被输入到三个文本框中。
在这里插入图片描述

3.4 生成项目

使用Qt Creator 创建一个c++例程,项目名称"_qtextedit" ,不选默认MainWindow类,选择Widget作为基类,不要勾选“Generate form”,不使用拖取控件,控件全部采用编程。将两个配置好的Kits同时选上,项目新建完成如下图。(详细的项目新建过程参见:《Qt常用的按钮控件编程(一)》)。
在这里插入图片描述点击左侧的Debug选项,可以看到两个编译套件Kit,可以选择编译运行在不同平台上的可执行文件,arm-v7为arm架构的设备,使用Qt4库,而桌面则是当前ubuntu系统,使用Qt5。

3.5 代码编辑

3.5.1 修改项目文件_qtextedit.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

# Default rules for deployment.
qnx: target.path = /tmp/$${
   
   TARGET}/bin
else: unix:!android: target.path = /opt/$${
   
   TARGET}/bin
!isEmpty(target.path): INSTALLS += target


# 根据使用的 Qt 版本设置编译条件
greaterThan(QT_MAJOR_VERSION, 4) {
   
   
    # 如果使用的是 Qt 5 或者更新版本
    message("使用的是 Qt 5版本")

} else {
   
   
    # 如果使用的是 Qt 4 或者更早的版本
    message("使用的是 Qt 4版本")
    DEFINES += QT_ARM_PLATFORM
    QMAKE_CXXFLAGS += -std=c++11
    QMAKE_CXXFLAGS += -Wno-psabi -Wno-deprecated-declarations

    LIBS += -lts

}

3.5.2 修改 main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
   
   
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

自动生成的程序未改变

3.5.3 修改 widget.h

#define WIDGET_H

#include <QWidget>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值