1. 實例功能概述
QComboBox 是下拉列表框組件類,它提供一個下拉列表供用戶選擇,也可以直接當(dāng)作一個QLineEdit 用作輸入。OComboBox 除了顯示可見下拉列表外,每個項 (item,或稱列表項)還可以關(guān)聯(lián)一個 QVariant 類型的變量,用于存儲一些不可見數(shù)據(jù)。
QPlainTextEdit 是一個多行文本編輯器,用于顯示和編輯多行簡單文本。實例 samp4_6 演示QComboBox和QPlainTextEdit 的使用,其運行時界面如圖4-6 所示。
關(guān)于"QComboBox 的使用"和“QPlainTextEdit 的使用”請參考下面源碼和《Qt5.9 c++開發(fā)指南》文章來源:http://www.zghlxwxcb.cn/news/detail-632688.html
2. 源碼
2.1 可視化UI設(shè)計
文章來源地址http://www.zghlxwxcb.cn/news/detail-632688.html
2.2 widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private slots:
void on_btnIniItems_clicked();
void on_btnClearItems_clicked();
void on_chkBoxEditable_clicked(bool checked);
void on_comboBox_currentIndexChanged(const QString &arg1);
void on_btnClearText_clicked();
void on_chkBoxReadonly_clicked(bool checked);
void on_btnToComboBox_clicked();
void on_plainTextEdit_customContextMenuRequested(const QPoint &pos);
void on_btnIni2_clicked();
void on_comboBox2_currentIndexChanged(const QString &arg1);
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
2.3 widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QTextDocument>
#include <QTextBlock>
#include <QMenu>
#include <QMap>
#include <QVariant>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_btnIniItems_clicked()
{ //"初始化列表"按鍵
QIcon icon;
icon.addFile(":/images/icons/aim.ico");
ui->comboBox->clear(); //清除列表
for (int i=0;i<20;i++)
ui->comboBox->addItem(icon,QString::asprintf("Item %d",i)); //添加一個字符串
// ui->comboBox->addItem(QString::asprintf("Item %d",i)); //添加一個字符串
// QStringList strList;
// strList<<"北京"<<"上海"<<"天津"<<"河北省"<<"山東省"<<"山西省";
// ui->comboBox->addItems(strList);
}
void Widget::on_btnClearItems_clicked()
{
ui->comboBox->clear(); //清除條目
}
void Widget::on_chkBoxEditable_clicked(bool checked)
{ //設(shè)置comboBox是否可編輯
ui->comboBox->setEditable(checked);
}
void Widget::on_comboBox_currentIndexChanged(const QString &arg1)
{ //comboBox選擇一個條目時,文本添加到 plainTextEdit
ui->plainTextEdit->appendPlainText(arg1);
}
void Widget::on_btnClearText_clicked()
{ //清除文本框
ui->plainTextEdit->clear();
}
void Widget::on_chkBoxReadonly_clicked(bool checked)
{//設(shè)置 plainTextEdit 的 ReadOnly 屬性
ui->plainTextEdit->setReadOnly(checked);
}
void Widget::on_btnToComboBox_clicked()
{ //plainTextEdit 的內(nèi)容逐行添加為 comboBox 的條目
QTextDocument* doc=ui->plainTextEdit->document(); //QPlainTextEdit 的內(nèi)容保存在一個 QTextDocument 里
int cnt=doc->blockCount();//QTextDocument分塊保存內(nèi)容,文本文件就是硬回車符是一個block,
QIcon icon(":/images/icons/aim.ico");
ui->comboBox->clear(); //清除條目
for (int i=0; i<cnt;i++) //掃描所有 blobk
{
QTextBlock textLine=doc->findBlockByNumber(i);//用blobk編號獲取block,就是獲取一行
QString str=textLine.text(); //轉(zhuǎn)換為文本
ui->comboBox->addItem(icon,str); //添加一個條目到comboBox
}
}
void Widget::on_plainTextEdit_customContextMenuRequested(const QPoint &pos)
{ //創(chuàng)建并顯示標(biāo)準(zhǔn)彈出式菜單
QMenu* menu=ui->plainTextEdit->createStandardContextMenu(); //創(chuàng)建標(biāo)準(zhǔn)右鍵菜單
// menu->exec(QCursor::pos());//在鼠標(biāo)光標(biāo)位置顯示右鍵快捷菜單
menu->exec(pos);//在鼠標(biāo)光標(biāo)位置顯示右鍵快捷菜單
}
void Widget::on_btnIni2_clicked()
{//初始化具有自定義數(shù)據(jù)的comboBox
//QMap自動根據(jù) key排序
QMap<QString, int> City_Zone;
City_Zone.insert("北京",10);
City_Zone.insert("上海",21);
City_Zone.insert("天津",22);
City_Zone.insert("大連",411);
City_Zone.insert("錦州",416);
City_Zone.insert("徐州",516);
City_Zone.insert("福州",591);
City_Zone.insert("青島",532);
ui->comboBox2->clear();
foreach(const QString &str,City_Zone.keys())
ui->comboBox2->addItem(str,City_Zone.value(str));
}
void Widget::on_comboBox2_currentIndexChanged(const QString &arg1)
{ //條目有用戶數(shù)據(jù)
QString zone=ui->comboBox2->currentData().toString();
ui->plainTextEdit->appendPlainText(arg1+":區(qū)號="+zone);
}
到了這里,關(guān)于04-5_Qt 5.9 C++開發(fā)指南_QComboBox和QPlainTextEdit的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!