色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 哈希表在QT中的應用舉例
哈希表在QT中的應用舉例
時間:2017-01-05作者:華清遠見

哈希表,是根據關鍵碼值(Key value)而直接進行訪問的數據結構。也就是說,它通過把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。

QHash是QT類庫中的一個容器類,內部維護了一張哈希表。QHash的內部哈希表每次翻倍增長,同時所有的內部元素都重新分配到桶內。計算公式為qHash(key)%QHash::capacity() (桶的個數)。下面通過一個例子,來說明QHash類的使用。

這個例子中的主窗口,類似QQ的好友列表,雙擊一個好友,彈出聊天對話框,標題顯示chat with +列表框中的內容。多次雙擊同一個好友,應該只有第一次彈對話框。

代碼為:

QString id = ui->listWidget->currentItem()->text();
        ChatDialog *dialog = new ChatDialog(id, this);
        dialog->show();

當多次雙擊同一個列表項時,如下圖所示,同樣的窗口彈出了多個,邏輯上不合理。

為了解決這個問題,需要用到哈希表,用到QHash類。

實現過程如下:

1) 首先,需要在界面類中,引入頭文件.

#include <QHash>

2) 在類中加入一個私有成員:

QHash<QString, ChatDialog *> chatFormHash;

3) 做信號和槽的關聯

QObject::connect(ui->listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)),this, SLOT(newWindow()));

4) 實現newWindow()函數

QString id = ui->listWidget->currentItem()->text();
        ChatDialog *dialog;
        if (this->chatFormHash.contains(id))
        {
                dialog = chatFormHash.value(id);
        }
        else
        {
                dialog = new ChatDialog(id, this);
                this->chatFormHash.insert(id, dialog);
        }
        dialog->show();

列表框中的列表項字符串,作為哈希表中的key值,聊天窗口的地址做為哈希表的value.當哈希表中沒有某個key時,創建一個新窗口。當第二次,雙擊同一個列表項時,直接從哈希表中查找窗口的地址即可,不需要再次創建,就解決了上面的問題。界面如下:

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 久久成人一区二区| 欧美专区中文字幕| 久久视频精品在线| 日韩视频一区在线| 久久成人免费视频| 久久久久久久久久久亚洲| 欧美国产极速在线| 热久久视久久精品18亚洲精品| 日韩av黄色在线观看| 国产中文字幕91| 国产婷婷成人久久av免费高清| 日韩精品在线免费观看视频| 中文字幕在线观看亚洲| 欧美日韩国产999| 欧美在线观看网址综合| 国产精品综合网站| 亚洲视频电影图片偷拍一区| 丝袜美腿亚洲一区二区| 欧美国产极速在线| 国产精品嫩草影院一区二区| 亚洲丁香婷深爱综合| 伊人伊成久久人综合网站| 欧美日本亚洲视频| 国产精品91免费在线| 亚洲激情成人网| 精品中文字幕在线2019| 国产不卡av在线| 亚洲欧美日韩区| 欧美视频免费在线观看| 国产精品看片资源| 宅男66日本亚洲欧美视频| 久久久久久美女| 亚洲激情小视频| 欧美成人免费一级人片100| 欧美自拍大量在线观看| 亚洲精品网址在线观看| 欧美福利在线观看| 91亚洲国产精品| 欧美日韩性视频在线| 成人免费看黄网站| 久久精品国产亚洲精品2020|