【嵌入式——QT】QComboBox和QPlainTextEdit
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);
}
原文地址:https://blog.csdn.net/weixin_39723539/article/details/136368715
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!