91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么利用Qt實現可擴展對話框

發布時間:2022-06-20 09:27:27 來源:億速云 閱讀:191 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么利用Qt實現可擴展對話框”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么利用Qt實現可擴展對話框”文章能幫助大家解決問題。

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

    一、項目介紹

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

    二、項目基本配置

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

    三、UI界面設計

    無UI界面

    四、主程序實現

    4.1 dialog.h頭文件

    聲明一個按鈕點擊槽函數:

    private slots:
        void showDetailInfo();

    聲明兩個函數實現窗體部分的創建,聲明兩個窗體和一個按鈕:

    private:
        void createBaseInfo();  //實現基本對話窗體部分
        void createDetailInfo();//實現擴展窗體部分
        QWidget *baseWidget;    //基本窗體部分
        QWidget *detailWidget;  //擴展窗體部分
    
        QPushButton *DetailBtn; //詳細-簡略按鈕

    4.2 dialog.cpp源文件

    主函數定義如下:

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

    定義createBaseInfo()函數,完成基本窗體baseWidget的構建:

    //完成基本窗體baseWidget的構建
    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("詳細");
        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()));//點擊詳細按鈕觸發showDetailInfo()槽函數
    }

    定義createDetailInfo()函數,完成擴展窗體detailWidget的構建:

    //實現擴展窗體detailWidget的構建
    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();//隱藏詳細窗體
    }

    最后實現窗體和按鈕文本的切換功能:

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

    五、效果演示

    怎么利用Qt實現可擴展對話框

    關于“怎么利用Qt實現可擴展對話框”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    qt
    AI

    望江县| 长沙县| 雅安市| 富裕县| 于都县| 隆子县| 远安县| 山西省| 库伦旗| 刚察县| 临夏县| 焉耆| 通海县| 宁南县| 正阳县| 吉隆县| 阳泉市| 宁津县| 赤水市| 长丰县| 布拖县| 读书| 奉新县| 察隅县| 广元市| 武鸣县| 南溪县| 宜都市| 进贤县| 林甸县| 苏尼特右旗| 大同县| 东乡族自治县| 麻阳| 天全县| 永春县| 会宁县| 宣化县| 渭南市| 开封市| 灵武市|