0
点赞
收藏
分享

微信扫一扫

Qt-Qt之QHash的使用分析

Qt-Qt之QHash的使用分析_#include



代码实例:

.pro

1 QT       += core gui
2
3 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
4
5 CONFIG += c++11
6
7 # The following define makes your compiler emit warnings if you use
8 # any Qt feature that has been marked deprecated (the exact warnings
9 # depend on your compiler). Please consult the documentation of the
10 # deprecated API in order to know how to port your code away from it.
11 DEFINES += QT_DEPRECATED_WARNINGS
12
13 # You can also make your code fail to compile if it uses deprecated APIs.
14 # In order to do so, uncomment the following line.
15 # You can also select to disable deprecated APIs only up to a certain version of Qt.
16 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
17
18 SOURCES += \
19 main.cpp \
20 mainwindow.cpp
21
22 HEADERS += \
23 mainwindow.h
24
25 FORMS += \
26 mainwindow.ui
27
28 # Default rules for deployment.
29 qnx: target.path = /tmp/$${TARGET}/bin
30 else: unix:!android: target.path = /opt/$${TARGET}/bin
31

View Code

main.cpp

1 #include "mainwindow.h"
2
3 #include <QApplication>
4
5 int main(int argc, char *argv[])
6 {
7 QApplication a(argc, argv);
8 MainWindow w;
9 w.show();
10 return a.exec();
11

View Code

mainwindow.h

1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QMainWindow>
5 #include <QDebug>
6
7 QT_BEGIN_NAMESPACE
8 namespace Ui { class MainWindow; }
9 QT_END_NAMESPACE
10
11 class MainWindow : public QMainWindow
12 {
13 Q_OBJECT
14
15 public:
16 MainWindow(QWidget *parent = nullptr);
17 ~MainWindow();
18
19 private slots:
20 void on_pushButton_4_clicked();
21
22 void on_pushButton_3_clicked();
23
24 void on_pushButton_13_clicked();
25
26 void on_pushButton_2_clicked();
27
28 void on_pushButton_6_clicked();
29
30 void on_pushButton_5_clicked();
31
32 void on_pushButton_14_clicked();
33
34 void on_pushButton_16_clicked();
35
36 void on_pushButton_15_clicked();
37
38 void on_pushButton_clicked();
39
40 void on_pushButton_17_clicked();
41
42 void on_pushButton_18_clicked();
43
44 void on_pushButton_8_clicked();
45
46 void on_pushButton_7_clicked();
47
48 void on_pushButton_19_clicked();
49
50 void on_pushButton_10_clicked();
51
52 void on_pushButton_9_clicked();
53
54 void on_pushButton_20_clicked();
55
56 void on_pushButton_12_clicked();
57
58 void on_pushButton_11_clicked();
59
60 void on_pushButton_21_clicked();
61
62 private:
63 Ui::MainWindow *ui;
64 QHash<QString, int> m_pHash;
65 };
66 #endif // MAINWINDOW_H

View Code

mainwindow.cpp

1 #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3
4 MainWindow::MainWindow(QWidget *parent)
5 : QMainWindow(parent)
6 , ui(new Ui::MainWindow)
7 {
8 ui->setupUi(this);
9 setWindowTitle(QStringLiteral("Qt之QHash的使用分析"));
10 }
11
12 MainWindow::~MainWindow()
13 {
14 delete ui;
15 }
16
17 void MainWindow::on_pushButton_4_clicked()
18 {
19 m_pHash.insert("key 2", 2);
20 m_pHash.insert("key 0", 0);
21 m_pHash.insert("key 1", 1);
22 }
23
24 void MainWindow::on_pushButton_3_clicked()
25 {
26 m_pHash["333"] = 333;
27 }
28
29 void MainWindow::on_pushButton_13_clicked()
30 {
31 m_pHash.insertMulti("three",4);
32 m_pHash.insertMulti("three",5);
33 m_pHash.insertMulti("three",6);
34 }
35
36 void MainWindow::on_pushButton_2_clicked()
37 {
38 if(!m_pHash.contains("333"))
39 ui->textEdit->append("contains:true");
40 else
41 ui->textEdit->append("contains:false");
42 }
43
44 void MainWindow::on_pushButton_6_clicked()
45 {
46 ui->textEdit->append("m_pHash[333]:" + QString::number(m_pHash["333"]));
47 }
48
49 void MainWindow::on_pushButton_5_clicked()
50 {
51 QList<QString> skeys = m_pHash.keys();
52 for(int i = 0; i< skeys.count(); i++)
53 {
54 ui->textEdit->append("skeys:" + skeys[i]);
55 }
56 }
57
58 void MainWindow::on_pushButton_14_clicked()
59 {
60 QList<QString> skeys2 = m_pHash.keys(4);
61 for(int i=0; i < skeys2.count(); i++)
62 {
63 ui->textEdit->append("skeys2:" + skeys2[i]);
64 }
65 }
66
67 void MainWindow::on_pushButton_16_clicked()
68 {
69 QList<int> svalues = m_pHash.values();
70 for(int i = 0; i < svalues.count(); i++)
71 {
72 ui->textEdit->append("svalues:" + QString::number(svalues[i]));
73 }
74 }
75
76 void MainWindow::on_pushButton_15_clicked()
77 {
78 QList<int> svalues2 = m_pHash.values("three");
79 for(int i=0; i<svalues2.count(); i++)
80 {
81 ui->textEdit->append("svalues2:" + QString::number(svalues2[i]));
82 }
83 }
84
85 void MainWindow::on_pushButton_clicked()
86 {
87 QHashIterator<QString, int> it(m_pHash);
88 while(it.hasNext())
89 {
90 it.next();
91 ui->textEdit->append("QHashIterator:" + it.key() + " : " + QString::number(it.value()));
92 }
93 }
94
95 void MainWindow::on_pushButton_17_clicked()
96 {
97 QHash<QString,int>::iterator it = m_pHash.find("333");
98 ui->textEdit->append("find 333:" + QString::number(it.value()));
99 }
100
101 void MainWindow::on_pushButton_18_clicked()
102 {
103 QList <QString> suniqueKeys = m_pHash.uniqueKeys();
104 for(int i = 0; i < suniqueKeys.count(); i++)
105 {
106 ui->textEdit->append("uniqueKeys:" + suniqueKeys[i]);
107 }
108 }
109
110 void MainWindow::on_pushButton_8_clicked()
111 {
112 ui->textEdit->append("size:" + QString::number(m_pHash.size()));
113 }
114
115 void MainWindow::on_pushButton_7_clicked()
116 {
117 ui->textEdit->append("count:" + QString::number(m_pHash.count()));
118 }
119
120 void MainWindow::on_pushButton_19_clicked()
121 {
122 ui->textEdit->append("isEmpty:" + QString::number(m_pHash.isEmpty()));
123 }
124 // 用Java风格迭代器进行遍历
125 void MainWindow::on_pushButton_10_clicked()
126 {
127 QHashIterator<QString,int> i(m_pHash);
128 i.toFront();
129 while(i.hasNext())
130 {
131 ui->textEdit->append("hasNext:" + i.key() + " : " + QString::number(i.next().value()));
132 }
133 i.toBack();
134 while(i.hasPrevious())
135 {
136 ui->textEdit->append("hasPrevious:" + i.key() + " : " + QString::number(i.previous().value()));
137 }
138 // bool jjj = i.findNext(2);
139 // if (jjj)
140 // qDebug() << "jjj: " << i.key() << i.value();
141
142 // bool kkk = i.findPrevious(2);
143 // if (kkk )
144 // qDebug() << "kkk : " << i.key() << i.value();
145 }
146 // 用STL风格迭代器进行遍历
147 void MainWindow::on_pushButton_9_clicked()
148 {
149 QHash<QString, int>::const_iterator constI;
150 for(constI = m_pHash.cbegin(); constI != m_pHash.cend(); constI++)
151 ui->textEdit->append("constI:" + constI.key() + " : " + QString::number(constI.value()));
152
153 QHash<QString,int>::iterator itI;
154 for(itI = m_pHash.begin();itI != m_pHash.end();itI++)
155 ui->textEdit->append("itI:" + itI.key() + " : " + QString::number(itI.value()));
156 }
157 // 用foreach进行遍历
158 void MainWindow::on_pushButton_20_clicked()
159 {
160 foreach(const QString &str, m_pHash.keys())
161 ui->textEdit->append("foreach: " + str + " : " + QString::number(m_pHash.value(str)));
162 // 对于多值映射,可以使用两重foreach语句
163 foreach(const QString &str, m_pHash.uniqueKeys())
164 {
165 foreach(int i, m_pHash.values(str))
166 ui->textEdit->append("uniqueKeys: " + str + " : " + QString::number(i));
167 }
168 }
169
170 void MainWindow::on_pushButton_12_clicked()
171 {
172 m_pHash.take("333");
173 ui->textEdit->append("take: " + QString::number(m_pHash.count()));
174 }
175
176 void MainWindow::on_pushButton_11_clicked()
177 {
178 m_pHash.remove("key 2");
179 ui->textEdit->append("remove: " + QString::number(m_pHash.count()));
180 }
181
182 void MainWindow::on_pushButton_21_clicked()
183 {
184 m_pHash.clear();
185 ui->textEdit->append("clear: " + QString::number(m_pHash.count()));
186

View Code

mainwindow.ui

1 <?xml version="1.0" encoding="UTF-8"?>
2 <ui version="4.0">
3 <class>MainWindow</class>
4 <widget class="QMainWindow" name="MainWindow">
5 <property name="geometry">
6 <rect>
7 <x>0</x>
8 <y>0</y>
9 <width>704</width>
10 <height>281</height>
11 </rect>
12 </property>
13 <property name="windowTitle">
14 <string>MainWindow</string>
15 </property>
16 <widget class="QWidget" name="centralwidget">
17 <layout class="QHBoxLayout" name="horizontalLayout">
18 <item>
19 <layout class="QVBoxLayout" name="verticalLayout">
20 <item>
21 <widget class="QTextEdit" name="textEdit"/>
22 </item>
23 <item>
24 <layout class="QHBoxLayout" name="horizontalLayout_3">
25 <item>
26 <widget class="QPushButton" name="pushButton_4">
27 <property name="text">
28 <string>增加元素1</string>
29 </property>
30 </widget>
31 </item>
32 <item>
33 <widget class="QPushButton" name="pushButton_3">
34 <property name="text">
35 <string>增加元素2</string>
36 </property>
37 </widget>
38 </item>
39 <item>
40 <widget class="QPushButton" name="pushButton_13">
41 <property name="text">
42 <string>增加元素3</string>
43 </property>
44 </widget>
45 </item>
46 </layout>
47 </item>
48 <item>
49 <layout class="QHBoxLayout" name="horizontalLayout_2">
50 <item>
51 <widget class="QPushButton" name="pushButton_2">
52 <property name="text">
53 <string>是否已经包含</string>
54 </property>
55 </widget>
56 </item>
57 <item>
58 <spacer name="horizontalSpacer">
59 <property name="orientation">
60 <enum>Qt::Horizontal</enum>
61 </property>
62 <property name="sizeHint" stdset="0">
63 <size>
64 <width>40</width>
65 <height>20</height>
66 </size>
67 </property>
68 </spacer>
69 </item>
70 </layout>
71 </item>
72 <item>
73 <layout class="QHBoxLayout" name="horizontalLayout_4">
74 <item>
75 <widget class="QPushButton" name="pushButton_6">
76 <property name="text">
77 <string>取值</string>
78 </property>
79 </widget>
80 </item>
81 <item>
82 <widget class="QPushButton" name="pushButton_5">
83 <property name="text">
84 <string>取Keys</string>
85 </property>
86 </widget>
87 </item>
88 <item>
89 <widget class="QPushButton" name="pushButton_14">
90 <property name="text">
91 <string>取Keys2</string>
92 </property>
93 </widget>
94 </item>
95 <item>
96 <widget class="QPushButton" name="pushButton_16">
97 <property name="text">
98 <string>取values</string>
99 </property>
100 </widget>
101 </item>
102 <item>
103 <widget class="QPushButton" name="pushButton_15">
104 <property name="text">
105 <string>取values2</string>
106 </property>
107 </widget>
108 </item>
109 <item>
110 <widget class="QPushButton" name="pushButton">
111 <property name="text">
112 <string>QMapIterator</string>
113 </property>
114 </widget>
115 </item>
116 <item>
117 <widget class="QPushButton" name="pushButton_17">
118 <property name="text">
119 <string>查找find</string>
120 </property>
121 </widget>
122 </item>
123 <item>
124 <widget class="QPushButton" name="pushButton_18">
125 <property name="text">
126 <string>uniqueKeys</string>
127 </property>
128 </widget>
129 </item>
130 </layout>
131 </item>
132 <item>
133 <layout class="QHBoxLayout" name="horizontalLayout_5">
134 <item>
135 <widget class="QPushButton" name="pushButton_8">
136 <property name="text">
137 <string>总元素size</string>
138 </property>
139 </widget>
140 </item>
141 <item>
142 <widget class="QPushButton" name="pushButton_7">
143 <property name="text">
144 <string>总元素count</string>
145 </property>
146 </widget>
147 </item>
148 <item>
149 <widget class="QPushButton" name="pushButton_19">
150 <property name="text">
151 <string>判空isEmpty</string>
152 </property>
153 </widget>
154 </item>
155 </layout>
156 </item>
157 <item>
158 <layout class="QHBoxLayout" name="horizontalLayout_6">
159 <item>
160 <widget class="QPushButton" name="pushButton_10">
161 <property name="text">
162 <string>Java风格迭代器</string>
163 </property>
164 </widget>
165 </item>
166 <item>
167 <widget class="QPushButton" name="pushButton_9">
168 <property name="text">
169 <string>STL风格迭代器</string>
170 </property>
171 </widget>
172 </item>
173 <item>
174 <widget class="QPushButton" name="pushButton_20">
175 <property name="text">
176 <string>foreach</string>
177 </property>
178 </widget>
179 </item>
180 </layout>
181 </item>
182 <item>
183 <layout class="QHBoxLayout" name="horizontalLayout_7">
184 <item>
185 <widget class="QPushButton" name="pushButton_12">
186 <property name="text">
187 <string>取走take</string>
188 </property>
189 </widget>
190 </item>
191 <item>
192 <widget class="QPushButton" name="pushButton_11">
193 <property name="text">
194 <string>移除remove</string>
195 </property>
196 </widget>
197 </item>
198 <item>
199 <widget class="QPushButton" name="pushButton_21">
200 <property name="text">
201 <string>清空clear</string>
202 </property>
203 </widget>
204 </item>
205 </layout>
206 </item>
207 </layout>
208 </item>
209 </layout>
210 </widget>
211 </widget>
212 <resources/>
213 <connections/>
214

View Code

 

 

搜索

复制

举报

相关推荐

0 条评论