最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ Qt開發(fā)之ComboBox下拉組合框組件用法詳解

 更新時間:2023年12月15日 08:50:55   作者:微軟技術分享  
Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應用程序,在Qt中,ComboBox(組合框)是一種常用的用戶界面控件,它提供了一個下拉列表,允許用戶從預定義的選項中選擇一個,本文給大家介紹QComboBox類的一些常用方法,需要的朋友可以參考下

Qt 是一個跨平臺C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺窗體應用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點介紹ComboBox下拉組合框組件的常用方法及靈活運用。

在Qt中,ComboBox(組合框)是一種常用的用戶界面控件,它提供了一個下拉列表,允許用戶從預定義的選項中選擇一個。該組件提供了一種方便的方式讓用戶從預定義的選項中進行選擇,一般來說ComboBox會以按鈕的形式顯示在界面上,用戶點擊按鈕后,會彈出一個下拉列表,其中包含預定義的選項。當然ComboBox不僅局限于選擇,也允許用戶手動輸入內容。

下面是QComboBox類的一些常用方法的說明和概述,按照表格形式列出:

方法描述
QComboBox(QWidget *parent = nullptr)構造函數(shù),創(chuàng)建一個組件對象。
addItem(const QString &text, const QVariant &userData = QVariant())向組件添加一個項,可以附帶用戶數(shù)據(jù)。
addItems(const QStringList &texts)向組件添加多個項,使用字符串列表。
insertItem(int index, const QString &text, const QVariant &userData = QVariant())在指定索引處插入一個項。
insertItems(int index, const QStringList &texts)在指定索引處插入多個項。
removeItem(int index)移除指定索引處的項。
clear()清除組件中的所有項。
setCurrentIndex(int index)設置組件當前選擇的項的索引。
currentText()返回當前組件中顯示的文本。
currentIndex()返回當前組件中選擇的項的索引。
count()返回組件中項的總數(shù)。
itemText(int index)返回指定索引處項的文本。
itemData(int index, int role = Qt::UserRole)返回指定索引處項的用戶數(shù)據(jù)。
setItemText(int index, const QString &text)設置指定索引處項的文本。
setItemData(int index, const QVariant &value, int role = Qt::UserRole)為指定索引處項設置額外的數(shù)據(jù)。
clearEditText()清除組件的編輯文本。
setEditable(bool editable)設置組件是否可編輯。如果可編輯,用戶可以手動輸入文本。
setMaxCount(int max)設置組件中顯示的最大項數(shù)。如果超過該數(shù)目,將出現(xiàn)垂直滾動條。
setMinimumContentsLength(int characters)設置組件的最小內容長度,以便顯示完整的項。
setModel(QAbstractItemModel *model)設置組件的數(shù)據(jù)模型。通過模型,可以更靈活地管理組件中的項。
view()返回組件的視圖,允許對視圖進行定制。
clear()清除組件中的所有項。
showPopup()打開組件的下拉列表。
hidePopup()隱藏組件的下拉列表。
activated(int index)信號,當用戶選擇組件中的項時發(fā)出。
currentIndexChanged(int index)信號,當組件中的當前項發(fā)生變化時發(fā)出。

上述這些方法提供了對ComboBox進行配置、管理和與之交互的靈活性。你可以根據(jù)具體的應用需求使用這些方法,使ComboBox在你的Qt應用程序中按照期望的方式工作。

如下圖所示,我們分別增加三個ComboBox組件,其中前兩個組件是默認的,最后一個是Font ComboBox字體選擇框,其實該選擇框也是標準選擇框的模板,只不過其默認為我們初始化了系統(tǒng)字體方便選擇而已但在使用上與ComboBox是一致的。

通常情況下使用ComboBox組件與前幾章中所示案例保持一致,只需要通過ui->comboBox_Main->調用不同的屬性即可實現(xiàn)賦值或取值,此處我們來演示一個更復雜的需求,實現(xiàn)選擇組件的聯(lián)動效果,即用戶選擇主選擇框時自動列出該主選擇框的子項,這也是開發(fā)中最常見的需求。

首先我們先來演示一下如何向Main選擇框內批量追加選項,為了能更好的展示圖標的導入,此處分別增加browser alt.ico和ksirtet.ico兩個ICO圖標,讀者可通過 《C++ Qt開發(fā):PushButton按鈕組件》中所使用的方法將圖標導入,接著在主函數(shù)初始化中我們可以使用以下代碼將其初始化。

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QIcon icon;
    icon.addFile(":/image/ksirtet.ico");

    // 填充第一個Main
    for(int x=0;x<10;x++)
    {
        ui->comboBox_Main->addItem(icon,QString::asprintf("元素_%d",x));
    }

    // 填充第二個SubMain
    icon.addFile(":/image/browser alt.ico");
    for(int x=0;x<10;x++)
    {
        ui->comboBox_SubMain->addItem(icon,QString::asprintf("元素_%d",x));
    }
}

運行上述代碼片段,則可以輸出如下圖所示的效果,可以看到兩個選擇框已被初始化。

接著我們來實現(xiàn)菜單的聯(lián)動,該功能的實現(xiàn)依賴于QMap容器,其中Key定義地區(qū),而Value值則定義一個QList該容器類存儲特定地區(qū)的城市,如下核心代碼中MainWindow用于初始化,將默認的comboBox_Main填充為四大地區(qū),依次初始化map容器映射。

#include <iostream>
#include <QList>
#include <QMap>

// --------------------------------------
// 定義全局變量
// --------------------------------------

// 存儲城市與ID
QMap<QString,int> City_Zone;

// 存儲地區(qū)與城市
QMap<QString,QList <QString>> map;

// 臨時變量
QList<QString> tmp;

MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // --------------------------------------------
    // comboBox_Main設置主菜單
    ui->comboBox_Main->clear();
    QStringList str;
    str << "北京" << "上海" << "廣州" << "深圳";

    // 添加元素到主菜單
    ui->comboBox_Main->addItems(str);

    // 依次設置圖標
    ui->comboBox_Main->setItemIcon(0,QIcon(":/image/ksirtet.ico"));
    ui->comboBox_Main->setItemIcon(1,QIcon(":/image/ksirtet.ico"));
    ui->comboBox_Main->setItemIcon(2,QIcon(":/image/ksirtet.ico"));
    ui->comboBox_Main->setItemIcon(3,QIcon(":/image/ksirtet.ico"));

    // --------------------------------------------
    // 設置城市和序號
    ui->comboBox_Main->clear();
    City_Zone.insert("請選擇",0);
    City_Zone.insert("北京",1);
    City_Zone.insert("上海",2);
    City_Zone.insert("廣州",3);
    City_Zone.insert("深圳",4);

    // --------------------------------------------
    // 循環(huán)填充一級菜單
    ui->comboBox_Main->clear();
    foreach(const QString &str,City_Zone.keys())
    {
        ui->comboBox_Main->addItem(QIcon(":/image/ksirtet.ico"),str,City_Zone.value(str));
    }

    // --------------------------------------------
    // 插入二級菜單
    tmp.clear();
    tmp << "大興區(qū)" << "昌平區(qū)" << "東城區(qū)" << "西城區(qū)";
    map["北京"] = tmp;

    tmp.clear();
    tmp << "黃浦區(qū)" << "徐匯區(qū)" << "長寧區(qū)" << "楊浦區(qū)";
    map["上海"] = tmp;

    tmp.clear();
    tmp << "荔灣區(qū)" << "越秀區(qū)" << "花都區(qū)" << "增城區(qū)";
    map["廣州"] = tmp;

    tmp.clear();
    tmp << "羅湖區(qū)" << "福田區(qū)" << "龍崗區(qū)" << "光明區(qū)";
    map["深圳"] = tmp;

    // 設置默認選擇第4個
    ui->comboBox_Main->setCurrentIndex(4);
}

菜單聯(lián)動的第二部則是對特定槽函數(shù)的實現(xiàn),當我們點擊comboBox_Main組件時,觸發(fā)currentTextChanged(QString)槽函數(shù),此時只需要在全局map容器內提取出所需要的子標簽,并依次賦值到comboBox_SubMain組件內即可,代碼如下所示;

// 觸發(fā)子標簽填充
void MainWindow::on_comboBox_Main_currentTextChanged(const QString &arg1)
{
    ui->comboBox_SubMain->clear();
    QList<QString> qtmp;

    qtmp = map.value(arg1);
    for(int x=0;x<qtmp.count();x++)
    {
        ui->comboBox_SubMain->addItem(QIcon(":/image/browser alt.ico"),qtmp[x]);
    }
}

// 觸發(fā)按鈕點擊
void MainWindow::on_pushButton_clicked()
{
    QString one = ui->comboBox_Main->currentText();
    QString two = ui->comboBox_SubMain->currentText();
    std::cout << one.toStdString().data() << " | " << two.toStdString().data() << std::endl;
}

運行后輸出效果如下,當讀者選擇主選擇框時子選擇框將被填充,此時讀者只需要根據(jù)標簽號的對應關系,即可判斷用戶選擇了那個選項。

以上就是C++ Qt開發(fā)之ComboBox下拉組合框組件用法詳解的詳細內容,更多關于C++ ComboBox組件的資料請關注腳本之家其它相關文章!

相關文章

  • C語言實現(xiàn)簡易學生管理系統(tǒng)

    C語言實現(xiàn)簡易學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡易學生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語言中的結構體內嵌函數(shù)用法

    C語言中的結構體內嵌函數(shù)用法

    這篇文章主要介紹了C語言中的結構體內嵌函數(shù)用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • c++隱式類型轉換存在的問題解析

    c++隱式類型轉換存在的問題解析

    隱式轉換,是指不需要用戶干預,編譯器私下進行的類型轉換行為,很多時候用戶都不知道具體進行了哪些轉換,這篇文章主要介紹了c++隱式類型轉換存在的陷阱,需要的朋友可以參考下
    2022-03-03
  • C++實現(xiàn)inline hook的原理及應用實例

    C++實現(xiàn)inline hook的原理及應用實例

    這篇文章主要介紹了C++實現(xiàn)inline hook的原理及應用,需要的朋友可以參考下
    2014-08-08
  • OpenCV4.1.0+VisualStudio2019開發(fā)環(huán)境搭建(超級簡單)

    OpenCV4.1.0+VisualStudio2019開發(fā)環(huán)境搭建(超級簡單)

    這篇文章主要介紹了OpenCV4.1.0+VisualStudio2019開發(fā)環(huán)境搭建(超級簡單),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • C++下標運算符詳解

    C++下標運算符詳解

    C語言中的下標運算符用于訪問數(shù)組或指針變量中的元素,它使用方括號 [] 來表示,并在方括號內指定元素的索引位置,本文給大家詳細的講解一下C++的下標運算符,需要的朋友可以參考下
    2023-09-09
  • Qt生成隨機數(shù)的方法

    Qt生成隨機數(shù)的方法

    本文主要介紹了Qt生成隨機數(shù),生成隨機數(shù)主要用到了函數(shù)qsrand和qrand,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 最大對稱字符串的算法

    最大對稱字符串的算法

    題目:輸入一個字符串,輸出該字符串中對稱的子字符串的最大長度。比如輸入字符串“google”,由于該字符串里最長的對稱子字符串是“goog”,因此輸出4。
    2013-03-03
  • C++算法設計之馬踏棋盤的實現(xiàn)

    C++算法設計之馬踏棋盤的實現(xiàn)

    這篇文章主要為大家詳細介紹了C++算法設計之馬踏棋盤的實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • VC通過托盤圖標得到該所屬進程的實現(xiàn)代碼

    VC通過托盤圖標得到該所屬進程的實現(xiàn)代碼

    這篇文章主要介紹了VC通過托盤圖標得到該所屬進程的實現(xiàn)代碼,為了方便大家使用特將多個代碼分享給大家,需要的朋友可以參考下
    2021-10-10

最新評論

西华县| 明水县| 清流县| 常山县| 平顺县| 静安区| 乐昌市| 图木舒克市| 昌平区| 乌拉特中旗| 东至县| 崇义县| 海南省| 吴忠市| 福贡县| 无极县| 拜城县| 玛纳斯县| 水城县| 博爱县| 马龙县| 镇宁| 历史| 永宁县| 扎鲁特旗| 信丰县| 和林格尔县| 囊谦县| 施秉县| 革吉县| 靖州| 宾川县| 沿河| 新河县| 正蓝旗| 广水市| 郧西县| 广德县| 遂平县| 玛多县| 钟山县|