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

利用Qt實(shí)現(xiàn)可擴(kuò)展對話框的示例代碼

 更新時間:2022年06月18日 15:35:45   作者:wendy_ya  
可擴(kuò)展對話框通常用于用戶對界面有不同要求的場合。當(dāng)供高級用戶使用或需要更多信息時,可通過某種方式的切換顯示完整對話窗體(擴(kuò)展窗體)。本文將用Qt實(shí)現(xiàn)可擴(kuò)展對話框,需要的可以參考一下

可擴(kuò)展對話框通常用于用戶對界面有不同要求的場合。通常情況下,只出現(xiàn)在基本對話窗體;當(dāng)供高級用戶使用或需要更多信息時,可通過某種方式的切換顯示完整對話窗體(擴(kuò)展窗體)。切換的工作通常由一個按鈕完成。

一、項目介紹

實(shí)現(xiàn)一個簡單填寫資料的對話框。通常情況下,只需要填寫姓名和性別。若有特殊需要,還需要填寫更多信息時,則切換至完整對話窗體,完整對話窗體包括年齡、部門、聯(lián)系方式等。此時詳細(xì)按鈕切換為簡略按鈕,在此點(diǎn)擊縮回簡單對話窗體。

二、項目基本配置

新建一個Qt案例,項目名稱為“Extension”,基類選擇“QDialog”,取消創(chuàng)建UI界面復(fù)選框的選中狀態(tài),完成項目創(chuàng)建。

三、UI界面設(shè)計

無UI界面

四、主程序?qū)崿F(xiàn)

4.1 dialog.h頭文件

聲明一個按鈕點(diǎn)擊槽函數(shù):

private slots:
    void showDetailInfo();

聲明兩個函數(shù)實(shí)現(xiàn)窗體部分的創(chuàng)建,聲明兩個窗體和一個按鈕:

private:
    void createBaseInfo();  //實(shí)現(xiàn)基本對話窗體部分
    void createDetailInfo();//實(shí)現(xiàn)擴(kuò)展窗體部分
    QWidget *baseWidget;    //基本窗體部分
    QWidget *detailWidget;  //擴(kuò)展窗體部分

    QPushButton *DetailBtn; //詳細(xì)-簡略按鈕

4.2 dialog.cpp源文件

主函數(shù)定義如下:

    setWindowTitle("Extension Dialog");   //窗體標(biāo)題
    createBaseInfo();
    createDetailInfo();
    QVBoxLayout *layout=new QVBoxLayout(this);//布局
    layout->addWidget(baseWidget);
    layout->addWidget(detailWidget);
    layout->setSizeConstraint(QLayout::SetFixedSize);//設(shè)置窗體的大小固定,不能利用拖拽改變大小
    layout->setSpacing(10);   //設(shè)置間距為10

定義createBaseInfo()函數(shù),完成基本窗體baseWidget的構(gòu)建:

//完成基本窗體baseWidget的構(gòu)建
void Dialog::createBaseInfo()
{
    baseWidget=new QWidget;
    QLabel *nameLabel=new QLabel("姓名:");
    QLineEdit *nameLineEdit=new QLineEdit;
    QLabel *sexLabel=new QLabel("性別:");
    QComboBox *sexComboBox=new QComboBox;
    sexComboBox->insertItem(0,"女");
    sexComboBox->insertItem(1,"男");
    QGridLayout *LeftLayout=new QGridLayout;
    LeftLayout->addWidget(nameLabel,0,0);
    LeftLayout->addWidget(nameLineEdit,0,1);
    LeftLayout->addWidget(sexLabel,1,0);
    LeftLayout->addWidget(sexComboBox,1,1);
    QPushButton *OKBtn=new QPushButton("確定");
    DetailBtn=new QPushButton("詳細(xì)");
    QDialogButtonBox *btnBox=new QDialogButtonBox(Qt::Vertical);
    btnBox->addButton(OKBtn,QDialogButtonBox::ActionRole);
    btnBox->addButton(DetailBtn,QDialogButtonBox::ActionRole);
    QHBoxLayout *mainLayout=new QHBoxLayout(baseWidget);
    mainLayout->addLayout(LeftLayout);
    mainLayout->addWidget(btnBox);
    connect(DetailBtn,SIGNAL(clicked()),this,SLOT(showDetailInfo()));//點(diǎn)擊詳細(xì)按鈕觸發(fā)showDetailInfo()槽函數(shù)
}

定義createDetailInfo()函數(shù),完成擴(kuò)展窗體detailWidget的構(gòu)建:

//實(shí)現(xiàn)擴(kuò)展窗體detailWidget的構(gòu)建
void Dialog::createDetailInfo()
{
    detailWidget=new QWidget;
    QLabel *ageLabel=new QLabel("年齡:");
    QLineEdit *ageLineEdit=new QLineEdit;
    ageLineEdit->setText("30");
    QLabel *departmentLabel=new QLabel("部門:");
    QComboBox *departmentComboBox=new QComboBox;
    departmentComboBox->addItem("部門1");
    departmentComboBox->addItem("部門2");
    departmentComboBox->addItem("部門3");
    QLabel *teleLabel=new QLabel("電話:");
    QLineEdit *teleLineEdit=new QLineEdit;
    QGridLayout *mainLayout=new QGridLayout(detailWidget);
    mainLayout->addWidget(ageLabel,0,0);
    mainLayout->addWidget(ageLineEdit,0,1);
    mainLayout->addWidget(departmentLabel,1,0);
    mainLayout->addWidget(departmentComboBox,1,1);
    mainLayout->addWidget(teleLabel,2,0);
    mainLayout->addWidget(teleLineEdit,2,1);
    detailWidget->hide();//隱藏詳細(xì)窗體
}

最后實(shí)現(xiàn)窗體和按鈕文本的切換功能:

//實(shí)現(xiàn)窗體的擴(kuò)展切換功能
void Dialog::showDetailInfo(){
    if(detailWidget->isHidden()){
        detailWidget->show();
        DetailBtn->setText("簡略");
    }
    else
    {
        detailWidget->hide();
        DetailBtn->setText("詳細(xì)");
    }
}

五、效果演示

到此這篇關(guān)于利用Qt實(shí)現(xiàn)可擴(kuò)展對話框的示例代碼的文章就介紹到這了,更多相關(guān)Qt可擴(kuò)展對話框內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c++ bitset詳解

    c++ bitset詳解

    這篇文章主要介紹了C++ bitset用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • C語言strcpy庫函數(shù)詳解

    C語言strcpy庫函數(shù)詳解

    這篇文章主要為大家介紹了C語言strcpy庫函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 基于C++中覆蓋,重載,隱藏的一點(diǎn)重要說明

    基于C++中覆蓋,重載,隱藏的一點(diǎn)重要說明

    下面小編就為大家?guī)硪黄贑++中覆蓋,重載,隱藏的一點(diǎn)重要說明。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • C++服務(wù)器和客戶端交互的項目實(shí)踐

    C++服務(wù)器和客戶端交互的項目實(shí)踐

    本文主要介紹了C++服務(wù)器和客戶端交互的項目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • C++超詳細(xì)講解拷貝構(gòu)造函數(shù)

    C++超詳細(xì)講解拷貝構(gòu)造函數(shù)

    我們經(jīng)常會用一個變量去初始化一個同類型的變量,那么對于自定義的類型也應(yīng)該有類似的操作,那么創(chuàng)建對象時如何使用一個已經(jīng)存在的對象去創(chuàng)建另一個與之相同的對象呢
    2022-06-06
  • C語言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作

    C語言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作

    這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu) 棧的基礎(chǔ)操作的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • C語言中如何判斷質(zhì)數(shù)

    C語言中如何判斷質(zhì)數(shù)

    這篇文章主要介紹了C語言中的判斷質(zhì)數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • C語言?如何用堆解決Topk問題

    C語言?如何用堆解決Topk問題

    TopK問題即在N個數(shù)中找出最大的前K個,這篇文章將詳細(xì)講解如何利用小根堆的方法解決TopK問題,文中代碼具有一定參考價值,快跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12
  • C++的命名空間詳解

    C++的命名空間詳解

    這篇文章主要介紹了C++編程中的命名空間基本知識講解,包括對C++中內(nèi)聯(lián)命名空間新特性的介紹,需要的朋友可以參考下
    2021-09-09
  • 關(guān)于C++中二分法詳解

    關(guān)于C++中二分法詳解

    大家好,本篇文章主要講的是關(guān)于C++中二分法詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02

最新評論

苍梧县| 阿拉善右旗| 巧家县| 阿克陶县| 长宁县| 喀喇沁旗| 措勤县| 平和县| 绥阳县| 余姚市| 南充市| 诸暨市| 剑川县| 文水县| 桦甸市| 清丰县| 义乌市| 金华市| 梅河口市| 南充市| 锦州市| 瓮安县| 岑巩县| 天水市| 梅河口市| 弋阳县| 沈丘县| 崇仁县| 陈巴尔虎旗| 丽江市| 安龙县| 田阳县| 和龙市| 奇台县| 汝城县| 监利县| 巴林右旗| 淄博市| 沽源县| 临泽县| 黎川县|