samp4_6.pro
#-------------------------------------------------
#
# Project created by QtCreator 2016-11-23T16:03:40
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = samp4_6
TEMPLATE = app
SOURCES += main.cpp\
widget.cpp
HEADERS += widget.h
FORMS += widget.ui
RESOURCES += \
res.qrc
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
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
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)
{ //设置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<cnt;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排序
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)
{ //条目有用户数据
QString zone=ui->comboBox2->currentData().toString();
ui->plainTextEdit->appendPlainText(arg1+":区号="+zone);
}
widget.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Widget</class>
<widget class="QWidget" name="Widget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>542</width>
<height>426</height>
</rect>
</property>
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="windowTitle">
<string>QComboBox和QPlainTextEdit</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>3</number>
</property>
<property name="leftMargin">
<number>3</number>
</property>
<property name="topMargin">
<number>3</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>3</number>
</property>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>4</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>简单ComboBox</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<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>200</width>
<height>16777215</height>
</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>false</bool>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>北京市</string>
</property>
<property name="icon">
<iconset resource="res.qrc">
<normaloff>:/images/icons/UNIT.ICO</normaloff>:/images/icons/UNIT.ICO</iconset>
</property>
</item>
<item>
<property name="text">
<string>上海市</string>
</property>
<property name="icon">
<iconset resource="res.qrc">
<normaloff>:/images/icons/UNIT.ICO</normaloff>:/images/icons/UNIT.ICO</iconset>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="btnIniItems">
<property name="text">
<string>初始化列表</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>有用户数据的ComboBox</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<property name="bottomMargin">
<number>9</number>
</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>文本框内容添加到ComboBox</string>
</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>200</width>
<height>16777215</height>
</size>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string>Read Only</string>
</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>
项目源码地址:
https://download.csdn.net/download/qq_30457077/85075848