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>