QT5笔记:17. QComboBox和QPlainTextEdit
-
例子
#include "widget.h" #include "ui_widget.h" #include <QTextBlock> Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); } Widget::~Widget() { delete ui; } /** * @brief Widget::on_btnInit_clicked * @note 为ComboBox设置item,并为item设置图标 */ void Widget::on_btnInit_clicked() { QIcon icon(":/images/images/aim.ico");//获取资源文件中的图标 ui->comboBox_2->clear(); for (int i = 0; i < 20; i ++) { ui->comboBox_2->addItem(icon,QString::asprintf("item %d",i));//添加项 } } void Widget::on_btnClear_clicked() { ui->comboBox_2->clear(); } /** * @brief Widget::on_pushButton_3_clicked * @note 设置有用户数据的内容,类似于为每一项设置一个Tag */ void Widget::on_pushButton_3_clicked() { QIcon icon(":/images/images/UNIT.ICO"); ui->comboBox->clear(); QMap<QString,int> map; map.insert("北京",10); map.insert("上海",20); map.insert("天津",30); foreach(auto str ,map.keys()){ ui->comboBox->addItem(icon, str, map.value(str)); } } void Widget::on_checkBox_clicked(bool checked) { ui->comboBox_2->setEditable(checked); } void Widget::on_comboBox_2_currentIndexChanged(const QString &arg1) { if(!arg1.isEmpty())ui->plainTextEdit->appendPlainText(arg1); } void Widget::on_comboBox_currentIndexChanged(const QString &arg1) { if(!arg1.isEmpty()) { QString data = ui->comboBox->currentData().toString(); if(!arg1.isEmpty())ui->plainTextEdit->appendPlainText(arg1+":"+data); } } void Widget::on_checkBox_2_clicked(bool checked) { ui->plainTextEdit->setReadOnly(checked); } void Widget::on_pushButton_5_clicked() { ui->plainTextEdit->clear(); } /** * @brief Widget::on_pushButton_4_clicked * @note 将文本框中的内容设置为ComboBox的选择项 */ void Widget::on_pushButton_4_clicked() { QIcon icon(":/images/images/aim.ico");//设置图标 ui->comboBox_2->clear(); QTextDocument *doc = ui->plainTextEdit->document();//获取文本框的内容对象 int blockCount = doc->blockCount();//获取文本框中的块数量(按照回车分块) for (int i = 0;i < blockCount; i ++) { QTextBlock text = doc->findBlockByNumber(i);//获取块对象 ui->comboBox_2->addItem(icon, text.text());//将块的文本添加为ComboBox的选择项 } }
-
界面