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

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時,創建一個新窗口。當第二次,雙擊同一個列表項時,直接從哈希表中查找窗口的地址即可,不需要再次創建,就解決了上面的問題。界面如下:

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
色偷偷偷亚洲综合网另类,亚洲欧美另类在线观看,欧美午夜激情在线,久久久精品一区
主站蜘蛛池模板: 久久成人人人人精品欧| 国产一区二区丝袜| 久久久久国色av免费观看性色| 欧美日韩中文在线| 97国产成人精品视频| 18久久久久久| 91久久精品美女| 日韩成人激情在线| 中文字幕日韩电影| 精品成人乱色一区二区| 久久久久久久久电影| 日韩av不卡在线| 91在线网站视频| 伊人亚洲福利一区二区三区| 欧美wwwwww| 欧美在线视频a| 亚洲第一区中文字幕| 有码中文亚洲精品| 精品成人av一区| 国产欧美精品va在线观看| 日韩精品在线免费| 精品高清美女精品国产区| 欧美一级淫片videoshd| 91在线视频导航| 久久99视频精品| 国产精品揄拍一区二区| 亚洲一区二区精品| 欧美精品videosex牲欧美| 91啪国产在线| 久久福利网址导航| 国产精品女人久久久久久| 亚洲香蕉成人av网站在线观看| 精品福利视频导航| 国产精品久久久久国产a级| 亚洲一区第一页| 日韩美女主播视频| 在线激情影院一区| 18久久久久久| 色多多国产成人永久免费网站| 欧美一级淫片videoshd| 亚洲美女在线视频|