QT乱翻书-ComboBox


QT乱翻书-ComboBox

#ifndef WIDGET_H
#define WIDGET_H

#include 

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
/********************************************************************************
** Form generated from reading UI file 'widget.ui'
**
** Created by: Qt User Interface Compiler version 5.9.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_WIDGET_H
#define UI_WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

QT_BEGIN_NAMESPACE

class Ui_Widget
{
public:
    QVBoxLayout *verticalLayout_3;
    QHBoxLayout *horizontalLayout;
    QGroupBox *groupBox;
    QGridLayout *gridLayout;
    QPushButton *btnIniItems;
    QPushButton *btnClearItems;
    QCheckBox *chkBoxEditable;
    QComboBox *comboBox;
    QGroupBox *groupBox_3;
    QVBoxLayout *verticalLayout_2;
    QPushButton *btnIni2;
    QComboBox *comboBox2;
    QGroupBox *groupBox_2;
    QVBoxLayout *verticalLayout;
    QHBoxLayout *horizontalLayout_2;
    QPushButton *btnToComboBox;
    QPushButton *btnClearText;
    QCheckBox *chkBoxReadonly;
    QPlainTextEdit *plainTextEdit;

    void setupUi(QWidget *Widget)
    {
        if (Widget->objectName().isEmpty())
            Widget->setObjectName(QStringLiteral("Widget"));
        Widget->resize(542, 426);
        QFont font;
        font.setPointSize(10);
        Widget->setFont(font);
        verticalLayout_3 = new QVBoxLayout(Widget);
        verticalLayout_3->setSpacing(3);
        verticalLayout_3->setContentsMargins(11, 11, 11, 11);
        verticalLayout_3->setObjectName(QStringLiteral("verticalLayout_3"));
        verticalLayout_3->setContentsMargins(3, 3, 3, 3);
        horizontalLayout = new QHBoxLayout();
        horizontalLayout->setSpacing(4);
        horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
        groupBox = new QGroupBox(Widget);
        groupBox->setObjectName(QStringLiteral("groupBox"));
        gridLayout = new QGridLayout(groupBox);
        gridLayout->setSpacing(6);
        gridLayout->setContentsMargins(11, 11, 11, 11);
        gridLayout->setObjectName(QStringLiteral("gridLayout"));
        btnIniItems = new QPushButton(groupBox);
        btnIniItems->setObjectName(QStringLiteral("btnIniItems"));

        gridLayout->addWidget(btnIniItems, 0, 0, 1, 1);

        btnClearItems = new QPushButton(groupBox);
        btnClearItems->setObjectName(QStringLiteral("btnClearItems"));

        gridLayout->addWidget(btnClearItems, 0, 1, 1, 1);

        chkBoxEditable = new QCheckBox(groupBox);
        chkBoxEditable->setObjectName(QStringLiteral("chkBoxEditable"));
        chkBoxEditable->setMaximumSize(QSize(200, 16777215));

        gridLayout->addWidget(chkBoxEditable, 0, 2, 1, 1);

        comboBox = new QComboBox(groupBox);
        QIcon icon;
        icon.addFile(QStringLiteral(":/images/icons/UNIT.ICO"), QSize(), QIcon::Normal, QIcon::Off);
        comboBox->addItem(icon, QString());
        comboBox->addItem(icon, QString());
        comboBox->setObjectName(QStringLiteral("comboBox"));
        comboBox->setEditable(false);

        gridLayout->addWidget(comboBox, 1, 0, 1, 3);


        horizontalLayout->addWidget(groupBox);

        groupBox_3 = new QGroupBox(Widget);
        groupBox_3->setObjectName(QStringLiteral("groupBox_3"));
        verticalLayout_2 = new QVBoxLayout(groupBox_3);
        verticalLayout_2->setSpacing(6);
        verticalLayout_2->setContentsMargins(11, 11, 11, 11);
        verticalLayout_2->setObjectName(QStringLiteral("verticalLayout_2"));
        verticalLayout_2->setContentsMargins(9, 9, 9, 9);
        btnIni2 = new QPushButton(groupBox_3);
        btnIni2->setObjectName(QStringLiteral("btnIni2"));

        verticalLayout_2->addWidget(btnIni2);

        comboBox2 = new QComboBox(groupBox_3);
        comboBox2->setObjectName(QStringLiteral("comboBox2"));

        verticalLayout_2->addWidget(comboBox2);


        horizontalLayout->addWidget(groupBox_3);


        verticalLayout_3->addLayout(horizontalLayout);

        groupBox_2 = new QGroupBox(Widget);
        groupBox_2->setObjectName(QStringLiteral("groupBox_2"));
        verticalLayout = new QVBoxLayout(groupBox_2);
        verticalLayout->setSpacing(6);
        verticalLayout->setContentsMargins(11, 11, 11, 11);
        verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
        horizontalLayout_2 = new QHBoxLayout();
        horizontalLayout_2->setSpacing(6);
        horizontalLayout_2->setObjectName(QStringLiteral("horizontalLayout_2"));
        btnToComboBox = new QPushButton(groupBox_2);
        btnToComboBox->setObjectName(QStringLiteral("btnToComboBox"));

        horizontalLayout_2->addWidget(btnToComboBox);

        btnClearText = new QPushButton(groupBox_2);
        btnClearText->setObjectName(QStringLiteral("btnClearText"));

        horizontalLayout_2->addWidget(btnClearText);

        chkBoxReadonly = new QCheckBox(groupBox_2);
        chkBoxReadonly->setObjectName(QStringLiteral("chkBoxReadonly"));
        chkBoxReadonly->setMaximumSize(QSize(200, 16777215));
        chkBoxReadonly->setLayoutDirection(Qt::LeftToRight);

        horizontalLayout_2->addWidget(chkBoxReadonly);


        verticalLayout->addLayout(horizontalLayout_2);

        plainTextEdit = new QPlainTextEdit(groupBox_2);
        plainTextEdit->setObjectName(QStringLiteral("plainTextEdit"));

        verticalLayout->addWidget(plainTextEdit);


        verticalLayout_3->addWidget(groupBox_2);


        retranslateUi(Widget);

        comboBox->setCurrentIndex(0);


        QMetaObject::connectSlotsByName(Widget);
    } // setupUi

    void retranslateUi(QWidget *Widget)
    {
        Widget->setWindowTitle(QApplication::translate("Widget", "QComboBox\345\222\214QPlainTextEdit", Q_NULLPTR));
        groupBox->setTitle(QApplication::translate("Widget", "\347\256\200\345\215\225ComboBox", Q_NULLPTR));
        btnIniItems->setText(QApplication::translate("Widget", "\345\210\235\345\247\213\345\214\226\345\210\227\350\241\250", Q_NULLPTR));
        btnClearItems->setText(QApplication::translate("Widget", "\346\270\205\351\231\244\345\210\227\350\241\250", Q_NULLPTR));
        chkBoxEditable->setText(QApplication::translate("Widget", "\345\217\257\347\274\226\350\276\221", Q_NULLPTR));
        comboBox->setItemText(0, QApplication::translate("Widget", "\345\214\227\344\272\254\345\270\202", Q_NULLPTR));
        comboBox->setItemText(1, QApplication::translate("Widget", "\344\270\212\346\265\267\345\270\202", Q_NULLPTR));

        groupBox_3->setTitle(QApplication::translate("Widget", "\346\234\211\347\224\250\346\210\267\346\225\260\346\215\256\347\232\204ComboBox", Q_NULLPTR));
        btnIni2->setText(QApplication::translate("Widget", "\345\210\235\345\247\213\345\214\226\345\237\216\345\270\202+\345\214\272\345\217\267", Q_NULLPTR));
        groupBox_2->setTitle(QApplication::translate("Widget", "QPlainTextEdit(\345\205\267\346\234\211\346\240\207\345\207\206\345\277\253\346\215\267\350\217\234\345\215\225)", Q_NULLPTR));
        btnToComboBox->setText(QApplication::translate("Widget", "\346\226\207\346\234\254\346\241\206\345\206\205\345\256\271\346\267\273\345\212\240\345\210\260ComboBox", Q_NULLPTR));
        btnClearText->setText(QApplication::translate("Widget", "\346\270\205\351\231\244\346\226\207\346\234\254\345\206\205\345\256\271", Q_NULLPTR));
        chkBoxReadonly->setText(QApplication::translate("Widget", "Read Only", Q_NULLPTR));
    } // retranslateUi

};

namespace Ui {
    class Widget: public Ui_Widget {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_WIDGET_H
#include "widget.h"
#include 

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

    return a.exec();
}
#include "widget.h"
#include "ui_widget.h"

#include    
#include    
#include    

#include    
#include    

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)
{ //设置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)
{//设置 plainTextEdit 的 ReadOnly 属性
    ui->plainTextEdit->setReadOnly(checked);
}

void Widget::on_btnToComboBox_clicked()
{ //plainTextEdit 的内容逐行添加为 comboBox 的条目
    QTextDocument*  doc=ui->plainTextEdit->document(); //QPlainTextEdit 的内容保存在一个 QTextDocument 里
    int cnt=doc->blockCount();//QTextDocument分块保存内容,文本文件就是硬回车符是一个block,

    QIcon   icon(":/images/icons/aim.ico");

    ui->comboBox->clear();  //清除条目
    for (int i=0; i//扫描所有 blobk
    {
         QTextBlock textLine=doc->findBlockByNumber(i);//用blobk编号获取block,就是获取一行
         QString str=textLine.text(); //转换为文本
         ui->comboBox->addItem(icon,str); //添加一个条目到comboBox
    }
}

void Widget::on_plainTextEdit_customContextMenuRequested(const QPoint &pos)
{ //创建并显示标准弹出式菜单
    QMenu* menu=ui->plainTextEdit->createStandardContextMenu(); //创建标准右键菜单
//    menu->exec(QCursor::pos());//在鼠标光标位置显示右键快捷菜单
    menu->exec(pos);//在鼠标光标位置显示右键快捷菜单
}

void Widget::on_btnIni2_clicked()
{//初始化具有自定义数据的comboBox
//QMap自动根据 key排序
    QMapint> 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)
{ //条目有用户数据
    QString zone=ui->comboBox2->currentData().toString();
    ui->plainTextEdit->appendPlainText(arg1+":区号="+zone);
}
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widgetclass>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0x>
    <y>0y>
    <width>601width>
    <height>426height>
   rect>
  property>
  <property name="font">
   <font>
    <pointsize>10pointsize>
   font>
  property>
  <property name="windowTitle">
   <string>QComboBox和QPlainTextEditstring>
  property>
  <layout class="QVBoxLayout" name="verticalLayout_3">
   <property name="spacing">
    <number>3number>
   property>
   <property name="leftMargin">
    <number>3number>
   property>
   <property name="topMargin">
    <number>3number>
   property>
   <property name="rightMargin">
    <number>3number>
   property>
   <property name="bottomMargin">
    <number>3number>
   property>
   <item>
    <layout class="QHBoxLayout" name="horizontalLayout">
     <property name="spacing">
      <number>4number>
     property>
     <item>
      <widget class="QGroupBox" name="groupBox">
       <property name="title">
        <string>简单ComboBoxstring>
       property>
       <layout class="QGridLayout" name="gridLayout">
        <item row="0" column="0">
         <widget class="QPushButton" name="btnIniItems">
          <property name="text">
           <string>初始化列表string>
          property>
         widget>
        item>
        <item row="0" column="1">
         <widget class="QPushButton" name="btnClearItems">
          <property name="text">
           <string>清除列表string>
          property>
         widget>
        item>
        <item row="0" column="2">
         <widget class="QCheckBox" name="chkBoxEditable">
          <property name="maximumSize">
           <size>
            <width>200width>
            <height>16777215height>
           size>
          property>
          <property name="text">
           <string>可编辑string>
          property>
         widget>
        item>
        <item row="1" column="0" colspan="3">
         <widget class="QComboBox" name="comboBox">
          <property name="editable">
           <bool>falsebool>
          property>
          <property name="currentIndex">
           <number>0number>
          property>
          <item>
           <property name="text">
            <string>北京市string>
           property>
           <property name="icon">
            <iconset resource="res.qrc">
             <normaloff>:/images/icons/UNIT.ICOnormaloff>:/images/icons/UNIT.ICOiconset>
           property>
          item>
          <item>
           <property name="text">
            <string>上海市string>
           property>
           <property name="icon">
            <iconset resource="res.qrc">
             <normaloff>:/images/icons/UNIT.ICOnormaloff>:/images/icons/UNIT.ICOiconset>
           property>
          item>
         widget>
        item>
       layout>
      widget>
     item>
     <item>
      <widget class="QGroupBox" name="groupBox_3">
       <property name="title">
        <string>有用户数据的ComboBoxstring>
       property>
       <layout class="QVBoxLayout" name="verticalLayout_2">
        <property name="leftMargin">
         <number>9number>
        property>
        <property name="topMargin">
         <number>9number>
        property>
        <property name="rightMargin">
         <number>9number>
        property>
        <property name="bottomMargin">
         <number>9number>
        property>
        <item>
         <widget class="QPushButton" name="btnIni2">
          <property name="text">
           <string>初始化城市+区号string>
          property>
         widget>
        item>
        <item>
         <widget class="QComboBox" name="comboBox2"/>
        item>
       layout>
      widget>
     item>
    layout>
   item>
   <item>
    <widget class="QGroupBox" name="groupBox_2">
     <property name="title">
      <string>QPlainTextEdit(具有标准快捷菜单)string>
     property>
     <layout class="QVBoxLayout" name="verticalLayout">
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout_2">
        <item>
         <widget class="QPushButton" name="btnToComboBox">
          <property name="text">
           <string>文本框内容添加到ComboBoxstring>
          property>
         widget>
        item>
        <item>
         <widget class="QPushButton" name="btnClearText">
          <property name="text">
           <string>清除文本内容string>
          property>
         widget>
        item>
        <item>
         <widget class="QCheckBox" name="chkBoxReadonly">
          <property name="maximumSize">
           <size>
            <width>200width>
            <height>16777215height>
           size>
          property>
          <property name="layoutDirection">
           <enum>Qt::LeftToRightenum>
          property>
          <property name="text">
           <string>Read Onlystring>
          property>
         widget>
        item>
       layout>
      item>
      <item>
       <widget class="QPlainTextEdit" name="plainTextEdit"/>
      item>
     layout>
    widget>
   item>
  layout>
 widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources>
  <include location="res.qrc"/>
 resources>
 <connections/>
ui>
QT