【嵌入式——QT】QComboBox和QPlainTextEdit

本文介绍了Qt库中的QComboBox组件(下拉列表框)和QPlainTextEdit(多行文本编辑器)的基本功能、方法以及如何在实际项目中添加、选择和操作它们。展示了如何处理用户选择变化、数据存储以及文本编辑操作。
摘要由CSDN通过智能技术生成

QComboBox
QComboBox是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当做一个QLineEdit用做输入,每个项还可以关联一个QVariant类型的变量,用于存储一些不可见的数据。
添加简单项

ui->mode_select->addItem("ReadOnly");

添加具有用户数据的项

QVariant val = QByteArray::fromHex("00");
ui->mode_select->addItem(tr("ReadOnly"), val);

QComboBox列表向的访问
QComboBox存储的项是一个列表,但是QComboBox不提供整个列表用于访问,可以通过索引访问某个项。

  • int currentIndex():返回当前项的索引,第一个项的索引为0;
  • QString currentText():返回当前项的文字;
  • QVariant currentData(int role = Qt::UserRole):返回当前项的关联数据,数据的缺省角色为role = Qt:UserRole;
  • QString itemText(int index):返回指定索引号的项的文字;
  • QVariant itemData(int index,int role=Qt::UserRole):返回指定索引号的项的关联数据;
  • int count():返回项的个数;

在QComboBox组件上选择项发生变化时会发射这两个信号
void currentIndexChanged(int index):参数为当前项的索引
void currentIndexChanged(const QString &text):参数为当前项的文字

QPlainTextEdit
QPlainTextEdit是一个多行文本编辑器,用于显示和编辑多行简单文本。

常用方法

  • QPlainTextEdit::appendPlainText(const QString &text):向QPlainTextEdit组件添加一行字符串;
  • void cut():将选定的文本复制到剪贴板,并从文本编辑中删除它;
  • void copy():将任何选定的文本复制到剪贴板;
  • void clear():删除文本edit中的所有文本;
  • void paste():将剪贴板中的文本粘贴到当前光标位置的文本编辑处;
  • void undo():取消上次操作;
  • void redo():重新执行最后一个操作;
  • void selectAll():选择所有文本;
  • void setPlainText(const QString &text):将文本编辑器的文本更改为字符串文本。删除之前的任何文本;
  • QString toPlainText():将QPlainTextEdit组件里显示的所有文字读取出来;

图片示例
在这里插入图片描述
代码示例

#ifndef QCOMBOBOXANDQPLAINTEXTEDITDIALOG_H
#define QCOMBOBOXANDQPLAINTEXTEDITDIALOG_H

#include <QDialog>

namespace Ui
{
    class QComboBoxAndQPlainTextEditDialog;
}

class QComboBoxAndQPlainTextEditDialog : public QDialog
{
    Q_OBJECT

public:
    explicit QComboBoxAndQPlainTextEditDialog(QWidget* parent = nullptr);
    ~QComboBoxAndQPlainTextEditDialog();

    void init();

private slots:
    void on_comboBox_currentIndexChanged(int index);

    void on_pushButton_cut_clicked();

    void on_pushButton_copy_clicked();

    void on_pushButton_paste_clicked();

    void on_pushButton_undo_clicked();

    void on_pushButton_clear_clicked();

    void on_pushButton_redo_clicked();

    void on_pushButton_selectAll_clicked();

    void on_pushButton_onLine_clicked();

    void on_plainTextEdit_customContextMenuRequested(const QPoint& pos);

private:
    Ui::QComboBoxAndQPlainTextEditDialog* ui;
};

#endif // QCOMBOBOXANDQPLAINTEXTEDITDIALOG_H

#include "QComboBoxAndQPlainTextEditDialog.h"
#include "ui_QComboBoxAndQPlainTextEditDialog.h"
#include <QTextBlock>
#include <QMenu>
#include <QDebug>
QComboBoxAndQPlainTextEditDialog::QComboBoxAndQPlainTextEditDialog(QWidget* parent)
    : QDialog(parent)
    , ui(new Ui::QComboBoxAndQPlainTextEditDialog)
{
    ui->setupUi(this);
    init();
}

QComboBoxAndQPlainTextEditDialog::~QComboBoxAndQPlainTextEditDialog()
{
    delete ui;
}

void QComboBoxAndQPlainTextEditDialog::init()
{
    ui->comboBox->addItem("北京", "1");
    ui->comboBox->addItem("上海", "2");
    ui->comboBox->addItem("广州", "3");
    ui->comboBox->addItem("深圳", "4");
    ui->comboBox->addItem("天津", "5");
    ui->plainTextEdit->setPlainText("测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据");
}

void QComboBoxAndQPlainTextEditDialog::on_comboBox_currentIndexChanged(int index)
{
    QString str = ui->comboBox->itemText(index);
    ui->showText->setText(str);
    int count = ui->comboBox->count();
    ui->showCount->setText(QString::number(count));
    ui->showIndex->setText(QString::number(index));
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_cut_clicked()
{
    ui->plainTextEdit->cut();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_copy_clicked()
{
    ui->plainTextEdit->copy();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_paste_clicked()
{
    ui->plainTextEdit->paste();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_undo_clicked()
{
    ui->plainTextEdit->undo();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_clear_clicked()
{
    ui->plainTextEdit->clear();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_redo_clicked()
{
    ui->plainTextEdit->redo();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_selectAll_clicked()
{
    ui->plainTextEdit->selectAll();
}


void QComboBoxAndQPlainTextEditDialog::on_pushButton_onLine_clicked()
{
    ui->comboBox_2->clear();
    //文本对象
    QTextDocument* doc = ui->plainTextEdit->document();
    //回车符是一个block 获得文本块个数
    int cnt = doc->blockCount();
    for(int i=0; i<cnt; i++) {
        //获取文本中的一行
        QTextBlock textLine = doc->findBlockByLineNumber(i);
        QString str = textLine.text();
        ui->comboBox_2->addItem(str);
        qDebug()<<"str"<<str;
    }
}

//自带的快捷菜单
void QComboBoxAndQPlainTextEditDialog::on_plainTextEdit_customContextMenuRequested(const QPoint& pos)
{
    QMenu* menu =  ui->plainTextEdit->createStandardContextMenu();
    menu->exec(pos);
}


  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值