国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++ Qt開發(fā):ComboBox下拉組合框組件

這篇具有很好參考價(jià)值的文章主要介紹了C++ Qt開發(fā):ComboBox下拉組合框組件。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

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

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

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

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

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

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

C++ Qt開發(fā):ComboBox下拉組合框組件

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

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

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

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

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

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

C++ Qt開發(fā):ComboBox下拉組合框組件

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

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

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

// 存儲(chǔ)城市與ID
QMap<QString,int> City_Zone;

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

// 臨時(shí)變量
QList<QString> tmp;

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

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

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

    // 依次設(shè)置圖標(biāo)
    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"));

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

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

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

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

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

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

    // 設(shè)置默認(rèn)選擇第4個(gè)
    ui->comboBox_Main->setCurrentIndex(4);
}

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

// 觸發(fā)子標(biāo)簽填充
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ā)按鈕點(diǎn)擊
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;
}

運(yùn)行后輸出效果如下,當(dāng)讀者選擇主選擇框時(shí)子選擇框?qū)⒈惶畛?,此時(shí)讀者只需要根據(jù)標(biāo)簽號(hào)的對(duì)應(yīng)關(guān)系,即可判斷用戶選擇了那個(gè)選項(xiàng)。

C++ Qt開發(fā):ComboBox下拉組合框組件文章來源地址http://www.zghlxwxcb.cn/news/detail-759966.html

到了這里,關(guān)于C++ Qt開發(fā):ComboBox下拉組合框組件的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在 QML 中,ComboBox 是一種常用的用戶界面控件,通常用于提供一個(gè)下拉式的選擇框,允許用戶從預(yù)定義的選項(xiàng)列表中選擇一個(gè)值

    ComboBox 詳解: 以下是 ComboBox 的一些重要屬性和特性: model : 用于指定 ComboBox 中的選項(xiàng)列表,可以是一個(gè)數(shù)組、列表、模型或者其他可迭代的數(shù)據(jù)結(jié)構(gòu)。 editable : 用于指定是否允許用戶編輯 ComboBox 中的文本輸入框,以便輸入非預(yù)定義的選項(xiàng)。 currentIndex : 用于獲取或設(shè)置當(dāng)前

    2024年04月15日
    瀏覽(31)
  • WPF下拉框ComboBox樣式

    WPF下拉框ComboBox樣式

    顯示效果下圖: 1、靜態(tài)顯示如圖1,懸浮如圖2 2、下拉的Popup帶陰影(無Border);下拉三角圖標(biāo)用的是自己的png圖片,可任意替換(其他或Path數(shù)據(jù)等自己處理);寬高等可直接在樣式代碼里修改。 3、實(shí)際項(xiàng)目里,對(duì)下拉的滾動(dòng)條做了美化處理,此處沒附帶上相關(guān)代碼。有需

    2024年02月16日
    瀏覽(22)
  • C++ Qt開發(fā):TableWidget表格組件

    C++ Qt開發(fā):TableWidget表格組件

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹 TableWidget 表格組件的常用方法及靈活運(yùn)用。 QTableWidget 是 Qt 中用于顯示表格數(shù)

    2024年02月04日
    瀏覽(27)
  • C++ Qt開發(fā):PushButton按鈕組件

    C++ Qt開發(fā):PushButton按鈕組件

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹 QPushButton 按鈕組件的常用方法及靈活運(yùn)用。 QPushButton 是 Qt 框架中用于創(chuàng)建按鈕

    2024年02月05日
    瀏覽(23)
  • python tkinter 下拉框(Combobox)

    python tkinter 下拉框(Combobox)

    代碼示例: 效果如下圖所示:

    2024年02月15日
    瀏覽(22)
  • C++ Qt 開發(fā):ListWidget列表框組件

    C++ Qt 開發(fā):ListWidget列表框組件

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹 ListWidget 列表框組件的常用方法及靈活運(yùn)用。 QListWidget 是 Qt 中的一個(gè)列表框組

    2024年02月04日
    瀏覽(23)
  • C++ Qt開發(fā):MdiArea多窗體組件

    C++ Qt開發(fā):MdiArea多窗體組件

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹 MdiArea 組件的常用方法及靈活運(yùn)用。 QMdiArea(Multiple Document Interface Area)是Qt中

    2024年02月04日
    瀏覽(18)
  • C++ Qt開發(fā):SqlRelationalTable關(guān)聯(lián)表組件

    C++ Qt開發(fā):SqlRelationalTable關(guān)聯(lián)表組件

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹 SqlRelationalTable 關(guān)聯(lián)表組件的常用方法及靈活運(yùn)用。 在上一篇文章中詳細(xì)介紹了

    2024年02月04日
    瀏覽(22)
  • C++ Qt開發(fā):DateTime日期時(shí)間組件

    C++ Qt開發(fā):DateTime日期時(shí)間組件

    Qt 是一個(gè)跨平臺(tái)C++圖形界面開發(fā)庫,利用Qt可以快速開發(fā)跨平臺(tái)窗體應(yīng)用程序,在Qt中我們可以通過拖拽的方式將不同組件放到指定的位置,實(shí)現(xiàn)圖形化開發(fā)極大的方便了開發(fā)效率,本章將重點(diǎn)介紹 QDateTime 日期與時(shí)間組件的常用方法及靈活運(yùn)用。 在Qt中,日期和時(shí)間的處理通

    2024年02月04日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包