<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
可延伸對話方塊通常用於使用者對介面有不同要求的場合。通常情況下,只出現在基本對話表單;當供高階使用者使用或需要更多資訊時,可通過某種方式的切換顯示完整對話表單(擴充套件表單)。切換的工作通常由一個按鈕完成。
實現一個簡單填寫資料的對話方塊。通常情況下,只需要填寫姓名和性別。若有特殊需要,還需要填寫更多資訊時,則切換至完整對話表單,完整對話表單包括年齡、部門、聯絡方式等。此時詳細按鈕切換為簡略按鈕,在此點選縮回簡單對話表單。
新建一個Qt案例,專案名稱為“Extension”,基礎類別選擇“QDialog”,取消建立UI介面核取方塊的選中狀態,完成專案建立。
無UI介面
宣告一個按鈕點選槽函數:
private slots: void showDetailInfo();
宣告兩個函數實現表單部分的建立,宣告兩個表單和一個按鈕:
private: void createBaseInfo(); //實現基本對話表單部分 void createDetailInfo();//實現擴充套件表單部分 QWidget *baseWidget; //基本表單部分 QWidget *detailWidget; //擴充套件表單部分 QPushButton *DetailBtn; //詳細-簡略按鈕
主函數定義如下:
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可延伸對話方塊內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45