第5章 基本對(duì)話框 75_第1頁
第5章 基本對(duì)話框 75_第2頁
第5章 基本對(duì)話框 75_第3頁
第5章 基本對(duì)話框 75_第4頁
第5章 基本對(duì)話框 75_第5頁
已閱讀5頁,還剩91頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

5.14使用QtDesigner設(shè)計(jì)對(duì)話框下面通過一個(gè)簡(jiǎn)單例子來介紹使用QtDesigner設(shè)計(jì)對(duì)話框的具體方法。具體見代碼CH510,最終運(yùn)行效果如圖5.19所示。P1685.14使用QtDesigner設(shè)計(jì)對(duì)話框(1)建立一個(gè)空工程。單擊“File”->“NewFileorProject...”,在彈出的對(duì)話框中選擇Projects組下的“EmptyQt4Project”,單擊“OK”按鈕。(2)在彈出的對(duì)話框中對(duì)該工程進(jìn)行命名并選擇保存的路徑,在這里命名為“Forms”。單擊“Next”按鈕,最后單擊“Finish”按鈕,完成該文件工程的建立。(3)下面添加該工程的.ui文件,在“Forms”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對(duì)話框中選擇“QtDesignerForm”選項(xiàng)。單擊“OK”按鈕,彈出新的對(duì)話框中選擇templates\forms組下的“DialogwithoutButtons”選項(xiàng)。單擊“Next”按鈕,再次單擊“Next”按鈕,最后單擊“Finish”按鈕,完成.ui文件的創(chuàng)建。5.14使用QtDesigner設(shè)計(jì)對(duì)話框(4)下面添加該工程的入口函數(shù)所在的文件(main.cpp文件),在“Forms”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對(duì)話框中選擇“C++SourceFile”選項(xiàng)。單擊“OK”按鈕,彈出新的對(duì)話框,命名(Name)為main.cpp。單擊“Next”按鈕,單擊“Finish”按鈕。(5)打開“main.cpp”文件,具體代碼如下:#include<QApplication>#include"ui_dialog.h"#include<QDialog>intmain(intargc,char*argv[]){QApplicationapp(argc,argv);Ui::Dialogui;QDialog*dialog=newQDialog;ui.setupUi(dialog);dialog->show();returnapp.exec();}Designer設(shè)計(jì)的一般步驟:(1)創(chuàng)建窗體,放置控件(2)對(duì)窗體進(jìn)行布局設(shè)計(jì)(3)設(shè)置控件的標(biāo)簽順序(4)創(chuàng)建信號(hào)和槽(5)連接信號(hào)和槽(畫圖法)第5章基本對(duì)話框5.1標(biāo)準(zhǔn)文件對(duì)話框:QFileDialog類5.2標(biāo)準(zhǔn)顏色對(duì)話框:QColorDialog類5.3標(biāo)準(zhǔn)字體對(duì)話框:QFontDialog類5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類5.5消息對(duì)話框:QMessageBox類5.7工具盒QToolBox類5.6自定義(Custom)消息框5.9QPalette類與移動(dòng)圖片綜合實(shí)例5.10可擴(kuò)展對(duì)話框的基本實(shí)現(xiàn)方法5.11不規(guī)則窗體5.12程序啟動(dòng)畫面(QSplashScreen)5.13多文檔的創(chuàng)建5.14使用QtDesigner設(shè)計(jì)對(duì)話框5.8進(jìn)度條(QProgressBar/QProgressDialog)ch501相

關(guān)

類類

明靜態(tài)函數(shù)函數(shù)說明QFileDialog類標(biāo)準(zhǔn)文件對(duì)話框getOpenFileName獲得用戶選擇的文件名getSaveFileName獲得用戶保存的文件名getExistingDirectory獲得用戶選擇的已存在的目錄名getOpenFileNames獲得用戶選擇的文件名列表QColorDialog類標(biāo)準(zhǔn)顏色對(duì)話框getColor獲得用戶選擇的顏色值QFontDialog類標(biāo)準(zhǔn)字體對(duì)話框getFont獲得用戶選擇的字體QInputDialog類標(biāo)準(zhǔn)輸入對(duì)話框getText標(biāo)準(zhǔn)字符串輸入對(duì)話框getItem下拉表?xiàng)l目輸入框getIntint類型數(shù)據(jù)輸入對(duì)話框getDoubledouble類型數(shù)據(jù)輸入對(duì)話框QMessageBox類消息對(duì)話框QMessageBox::questionQuestion消息框QMessageBox::informationInformation消息框QMessageBox::warningWarning消息框QMessageBox::criticalCritical消息框QMessageBox::aboutAbout消息框QMessageBox::aboutQtAboutQt消息框標(biāo)準(zhǔn)基本對(duì)話框所需的靜態(tài)函數(shù)5.1標(biāo)準(zhǔn)文件對(duì)話框:QFileDialog類5.1.1函數(shù)說明QFileDialog類有幾個(gè)靜態(tài)函數(shù)如表5.1所示,用戶通過這些函數(shù)可以很方便地定制自己的文件對(duì)話框。相

關(guān)

類類

明靜態(tài)函數(shù)函數(shù)說明QFileDialog類標(biāo)準(zhǔn)文件對(duì)話框getOpenFileName獲得用戶選擇的文件名getSaveFileName獲得用戶保存的文件名getExistingDirectory獲得用戶選擇的已存在的目錄名getOpenFileNames獲得用戶選擇的文件名列表QColorDialog類標(biāo)準(zhǔn)顏色對(duì)話框getColor獲得用戶選擇的顏色值QFontDialog類標(biāo)準(zhǔn)字體對(duì)話框getFont獲得用戶選擇的字體QInputDialog類標(biāo)準(zhǔn)輸入對(duì)話框getText標(biāo)準(zhǔn)字符串輸入對(duì)話框getItem下拉表?xiàng)l目輸入框getIntint類型數(shù)據(jù)輸入對(duì)話框getDoubledouble類型數(shù)據(jù)輸入對(duì)話框QMessageBox類消息對(duì)話框QMessageBox::questionQuestion消息框QMessageBox::informationInformation消息框QMessageBox::warningWarning消息框QMessageBox::criticalCritical消息框QMessageBox::aboutAbout消息框QMessageBox::aboutQtAboutQt消息框5.1.1函數(shù)說明getOpenFileName()函數(shù)返回用戶選擇的文件名。但是當(dāng)用戶在選擇文件時(shí),如果選擇“取消”(Cancel),則返回一個(gè)空串。在此只詳細(xì)說明getOpenFileName()靜態(tài)函數(shù)各個(gè)參數(shù)的作用,其他文件對(duì)話框類中相關(guān)的靜態(tài)函數(shù)的參數(shù)有與其類似之處。其函數(shù)形式如下:QStringQFileDialog::getOpenFileName(QWidget*parent=0, //標(biāo)準(zhǔn)文件對(duì)話框的父窗口constQString&caption=QString(), //標(biāo)準(zhǔn)文件對(duì)話框的標(biāo)題名constQString&dir=QString(), //注(1)路徑constQString&filter=QString(), //注(2)文件類型過濾QString*selectedFilter=0, //用戶選擇的過濾器通過此參數(shù)返回Optionsoptions=0//選擇顯示文件名的格式,默認(rèn)是同時(shí)顯示目錄與文件名)5.1.2創(chuàng)建步驟下面是創(chuàng)建一個(gè)標(biāo)準(zhǔn)文件對(duì)話框的詳細(xì)步驟:(1)在dialog.h中,添加private成員變量如下:QPushButton*fileBtn;QLineEdit*fileLineEdit;QGridLayout*mainLayout;(2)添加privateslots槽函數(shù):voidshowFile();在開始部分添加頭文件:#include<QLineEdit>#include<QGridLayout>5.1.2創(chuàng)建步驟(3)在dialog.cpp文件中的構(gòu)造函數(shù)中添加代碼如下:fileBtn=newQPushButton; //各個(gè)控件對(duì)象的初始化fileBtn->setText(tr("文件標(biāo)準(zhǔn)對(duì)話框?qū)嵗?));fileLineEdit=newQLineEdit; //用來顯示選擇的文件名以及添加布局管理:mainLayout=newQGridLayout(this);//布局設(shè)計(jì)mainLayout->addWidget(fileBtn,0,0);mainLayout->addWidget(fileLineEdit,0,1);最后添加事件關(guān)聯(lián):connect(fileBtn,SIGNAL(clicked()),this,SLOT(showFile()));//事件關(guān)聯(lián)5.1.2創(chuàng)建步驟其中,槽函數(shù)showFile()的具體實(shí)現(xiàn)代碼如下:voidDialog::showFile(){QStrings=QFileDialog::getOpenFileName(this,"openfiledialog","/","C++files(*.cpp)::Cfiles(*.c)::Headfiles(*.h)");fileLineEdit->setText(s);}在dialog.cpp文件的開始部分添加頭文件:#include<QGridLayout>#include<QFileDialog>#include<QPushButton>5.1.2創(chuàng)建步驟(4)運(yùn)行該程序后,點(diǎn)擊“文件標(biāo)準(zhǔn)對(duì)話框?qū)嵗卑粹o后顯示圖5.2。5.2標(biāo)準(zhǔn)顏色對(duì)話框:QColorDialog類5.2.1函數(shù)說明標(biāo)準(zhǔn)顏色對(duì)話框QColorDialog類的一個(gè)靜態(tài)函數(shù):getColor()函數(shù)返回用戶選擇的顏色值,下面是getColor()函數(shù)形式:

QColor

getColor(constQColor&initial=Qt::white, //注,默認(rèn)顏色QWidget*parent=0 //標(biāo)準(zhǔn)顏色對(duì)話框的父窗口);

通過QColor::isValid()可以判斷選擇的顏色是否有效5.2.2創(chuàng)建步驟下面是創(chuàng)建一個(gè)標(biāo)準(zhǔn)顏色對(duì)話框的詳細(xì)步驟:(1)在dialog.h中,添加private成員變量如下:QPushButton*colorBtn;QFrame*colorFrame;(2)添加privateslots槽函數(shù):voidshowColor();(3)在dialog.cpp中,構(gòu)造函數(shù)中的代碼如下:colorBtn=newQPushButton;//創(chuàng)建各個(gè)控件的對(duì)象colorBtn->setText(tr("顏色標(biāo)準(zhǔn)對(duì)話框?qū)嵗?));colorFrame=newQFrame;//根據(jù)選擇的顏色更新背景colorFrame->setFrameShape(QFrame::Box);colorFrame->setAutoFillBackground(true);其中QFrame的對(duì)象colorFrame是根據(jù)用戶選擇不同顏色更新不同的背景。5.2.2創(chuàng)建步驟在布局管理中添加代碼:mainLayout->addWidget(colorBtn,1,0);//布局設(shè)計(jì)mainLayout->addWidget(colorFrame,1,1);最后添加事件關(guān)聯(lián):connect(colorBtn,SIGNAL(clicked()),this,SLOT(showColor()));//事件關(guān)聯(lián)其中,槽函數(shù)showColor()的實(shí)現(xiàn)代碼如下:voidDialog::showColor(){QColorc=QColorDialog::getColor(Qt::blue);//默認(rèn)藍(lán)色if(c.isValid())//iftheusercancelsthedialog,itreturnsaninvalidcolor{colorFrame->setPalette(QPalette(c));}}5.2.2創(chuàng)建步驟(4)在文件開始添加頭文件:#include<QColorDialog>(5)運(yùn)行該程序后,單擊“顏色標(biāo)準(zhǔn)對(duì)話框?qū)嵗卑粹o后顯示如圖5.3所示界面。5.3標(biāo)準(zhǔn)字體對(duì)話框:QFontDialog類5.3.1函數(shù)說明標(biāo)準(zhǔn)字體對(duì)話框QFontDialog類的一個(gè)靜態(tài)函數(shù)getFont()函數(shù),返回用戶選擇的字體,下面是getFont()函數(shù)形式:QFont

getFont(bool*ok, //注,返回狀態(tài)QWidget*parent=0 //標(biāo)準(zhǔn)字體對(duì)話框的父窗口);5.3.2創(chuàng)建步驟下面是創(chuàng)建標(biāo)準(zhǔn)字體對(duì)話框的詳細(xì)步驟:(1)在dialog.h中,添加private成員變量如下:QPushButton*fontBtn;QLineEdit*fontLineEdit;(2)添加privateslots槽函數(shù):voidshowFont();(3)在dialog.cpp中,構(gòu)造函數(shù)中的代碼:fontBtn=newQPushButton; //創(chuàng)建控件的對(duì)象fontBtn->setText(tr("字體標(biāo)準(zhǔn)對(duì)話框?qū)嵗?));fontLineEdit=newQLineEdit; //顯示更改的字符串fontLineEdit->setText(tr("Welcome!"));以及添加布局管理:mainLayout->addWidget(fontBtn,2,0);//布局設(shè)計(jì)mainLayout->addWidget(fontLineEdit,2,1);最后添加事件關(guān)聯(lián):connect(fontBtn,SIGNAL(clicked()),this,SLOT(showFont()));//事件關(guān)聯(lián)5.3.2創(chuàng)建步驟其中,槽函數(shù)showFont()的實(shí)現(xiàn)代碼如下:voidDialog::showFont(){ boolok; QFontf=QFontDialog::getFont(&ok);if(ok){fontLineEdit->setFont(f);}}5.3.2創(chuàng)建步驟(4)在文件開始添加頭文件:#include<QFontDialog>(5)運(yùn)行該程序后,單擊“字體標(biāo)準(zhǔn)對(duì)話框?qū)嵗卑粹o后顯示如圖5.4所示界面。標(biāo)準(zhǔn)輸入對(duì)話框提供了4種數(shù)據(jù)類型的輸入:字符串、int、double、下拉列表框P116表相

關(guān)

類類

明靜態(tài)函數(shù)函數(shù)說明QFileDialog類標(biāo)準(zhǔn)文件對(duì)話框getOpenFileName獲得用戶選擇的文件名getSaveFileName獲得用戶保存的文件名getExistingDirectory獲得用戶選擇的已存在的目錄名getOpenFileNames獲得用戶選擇的文件名列表QColorDialog類標(biāo)準(zhǔn)顏色對(duì)話框getColor獲得用戶選擇的顏色值QFontDialog類標(biāo)準(zhǔn)字體對(duì)話框getFont獲得用戶選擇的字體QInputDialog類標(biāo)準(zhǔn)輸入對(duì)話框getText標(biāo)準(zhǔn)字符串輸入對(duì)話框getItem下拉表?xiàng)l目輸入框getIntint類型數(shù)據(jù)輸入對(duì)話框getDoubledouble類型數(shù)據(jù)輸入對(duì)話框QMessageBox類消息對(duì)話框QMessageBox::questionQuestion消息框QMessageBox::informationInformation消息框QMessageBox::warningWarning消息框QMessageBox::criticalCritical消息框QMessageBox::aboutAbout消息框QMessageBox::aboutQtAboutQt消息框5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類(4)運(yùn)行該程序后,單擊“標(biāo)準(zhǔn)輸入對(duì)話框?qū)嵗卑粹o后顯示如圖5.5所示。

界面設(shè)計(jì)P121增加InputDlg類添加inputdlg.h和inputdlg.cpp文件5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類完成主對(duì)話框的操作過程如下:P124(1)在dialog.h中,添加頭文件: #include"inputdlg.h"。添加private成員變量如下:QPushButton*inputBtn;添加實(shí)現(xiàn)標(biāo)準(zhǔn)輸入對(duì)話框?qū)嵗腎nputDlg類:

InputDlg*inputDlg;(2)添加

privateslots槽函數(shù):voidshowInputDlg();5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類(3)在dialog.cpp中,構(gòu)造函數(shù)中的代碼如下:inputBtn=newQPushButton; //創(chuàng)建控件的對(duì)象inputBtn->setText(tr("標(biāo)準(zhǔn)輸入對(duì)話框?qū)嵗?));添加布局管理:mainLayout->addWidget(inputBtn,3,0); //布局設(shè)計(jì)最后添加事件關(guān)聯(lián):connect(inputBtn,SIGNAL(clicked()),this,SLOT(showInputDlg()));

//事件關(guān)聯(lián)其中,槽函數(shù)showInputDlg()的實(shí)現(xiàn)代碼如下:voidDialog::showInputDlg(){inputDlg=newInputDlg(this);inputDlg->show();}5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類(4)運(yùn)行該程序后,單擊“標(biāo)準(zhǔn)輸入對(duì)話框?qū)嵗卑粹o后顯示如圖5.5所示。

5.4.1標(biāo)準(zhǔn)字符串輸入對(duì)話框標(biāo)準(zhǔn)字符串輸入對(duì)話框是通過QInputDialog類的靜態(tài)函數(shù)getText()來完成的,

getText()函數(shù)形式如下:QStringgetText(QWidget*parent, //標(biāo)準(zhǔn)輸入對(duì)話框的父窗口constQString&title,//標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)題名constQString&label,//標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)簽提示QLineEdit::EchoModemode=QLineEdit::Normal,//指定標(biāo)準(zhǔn)輸入對(duì)話框中QLineEdit控件的輸入模式constQString&text=QString(),//標(biāo)準(zhǔn)字符串輸入對(duì)話框彈出時(shí)QLineEdit控件中默認(rèn)出現(xiàn)的文字bool*ok=0, //注,返回狀態(tài)Qt::WindowFlagsflags=0//指明標(biāo)準(zhǔn)輸入對(duì)話框的窗體標(biāo)識(shí));5.4.1標(biāo)準(zhǔn)字符串輸入對(duì)話框接著上述的程序,完成inputdlg.cpp文件中的槽函數(shù)ChangeName()的實(shí)現(xiàn)。具體代碼如下:voidInputDlg::ChangeName(){boolok;QStringtext=QInputDialog::getText(this,tr("標(biāo)準(zhǔn)字符串輸入對(duì)話框"),tr("請(qǐng)輸入姓名:"),QLineEdit::Normal,nameLabel2->text(),&ok);if(ok&&!text.isEmpty())nameLabel2->setText(text);}在inputdlg.cpp文件的開頭添加頭文件:#include<QInputDialog>5.4.2標(biāo)準(zhǔn)條目選擇對(duì)話框標(biāo)準(zhǔn)條目選擇對(duì)話框是通過QInputDialog類的靜態(tài)函數(shù)getItem()函數(shù)完成,

getItem()函數(shù)形式如下:QStringgetItem(QWidget*parent,//標(biāo)準(zhǔn)輸入對(duì)話框的父窗口constQString&title,//標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)題名constQString&label,//標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)簽提示constQStringList&items,//注(1)QSringList對(duì)象intcurrent=0, //注(2)默認(rèn)條目序號(hào)booleditable=true,//指定QComboBox控件中顯示的文字是否可編輯bool*ok=0, //注(3)返回狀態(tài)Qt::WindowFlagsflags=0//指明標(biāo)準(zhǔn)輸入對(duì)話框的窗口標(biāo)識(shí));5.4.2標(biāo)準(zhǔn)條目選擇對(duì)話框接著上述的程序,完成inputdlg.cpp文件中的槽函數(shù)ChangeSex()的實(shí)現(xiàn)。具體代碼如下:voidInputDlg::ChangeSex(){ QStringListSexItems; SexItems<<tr("男")<<tr("女");

boolok; QStringSexItem=QInputDialog::getItem(this,tr("標(biāo)準(zhǔn)條目選擇對(duì)話框"),tr("請(qǐng)選擇性別:"),SexItems,0,false,&ok); if(ok&&!SexItem.isEmpty()) sexLabel2->setText(SexItem);}5.4.3標(biāo)準(zhǔn)int類型輸入對(duì)話框標(biāo)準(zhǔn)int類型輸入對(duì)話框通過QInputDialog類的靜態(tài)函數(shù)getInt()函數(shù)完成,getInt()函數(shù)形式如下:intgetInt(QWidget*parent, //標(biāo)準(zhǔn)輸入對(duì)話框的父窗口constQString&title, //標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)題名constQString&label, //標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)簽提示intvalue=0, //指定標(biāo)準(zhǔn)輸入對(duì)話框中QSpinBox控件默認(rèn)顯示值intmin=-2147483647, //指定QSpinBox控件的數(shù)值范圍intmax=2147483647,intstep=1, //指定QSpinBox控件的步進(jìn)值bool*ok=0, //注,保存選擇的狀態(tài)Qt::WindowFlagsflags=0//指明標(biāo)準(zhǔn)輸入對(duì)話框的窗口標(biāo)識(shí));5.4.3標(biāo)準(zhǔn)int類型輸入對(duì)話框接著上述的程序,完成inputdlg.cpp文件中的槽函數(shù)ChangeAge()的實(shí)現(xiàn)。具體代碼如下:voidInputDlg::ChangeAge(){ boolok; intage=QInputDialog::getInt(this,tr("標(biāo)準(zhǔn)int類型輸入對(duì)話框"),tr("請(qǐng)輸入年齡:"),ageLabel2->text().toInt(&ok),0,100,1,&ok); if(ok) ageLabel2->setText(QString(tr("%1")).arg(age));}5.4.4標(biāo)準(zhǔn)double類型輸入對(duì)話框標(biāo)準(zhǔn)double類型輸入對(duì)話框通過QInputDialog類的靜態(tài)函數(shù)getDouble()函數(shù)完成,getDouble()函數(shù)形式如下:doublegetDouble(QWidget*parent, //標(biāo)準(zhǔn)輸入對(duì)話框的父窗口constQString&title, //標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)題名constQString&label, //標(biāo)準(zhǔn)輸入對(duì)話框的標(biāo)簽提示doublevalue=0, //指定標(biāo)準(zhǔn)輸入對(duì)話框中QSpinBox控件默認(rèn)顯示值doublemin=-2147483647, //指定QSpinBox控件的數(shù)值范圍doublemax=2147483647,intdecimals=1, //指定QSpinBox控件的步進(jìn)值bool*ok=0, //注,保存選擇狀態(tài)Qt::WindowFlagsflags=0 //指明標(biāo)準(zhǔn)輸入對(duì)話框的窗口標(biāo)識(shí));5.4.4標(biāo)準(zhǔn)double類型輸入對(duì)話框接著上述的程序,完成inputdlg.cpp文件中槽函數(shù)ChangeScore()的實(shí)現(xiàn)。具體代碼如下:voidInputDlg::ChangeScore(){ boolok; doublescore=QInputDialog::getDouble(this,tr("標(biāo)準(zhǔn)double類型輸入對(duì)話框"),tr("請(qǐng)輸入成績(jī):"),scoreLabel2->text().toDouble(&ok),0,100,1,&ok); if(ok) scoreLabel2->setText(QString(tr("%1")).arg(score));}消息框給用戶提示包括:Question:詢問Information:提示W(wǎng)arning:提醒Critical:警告About:關(guān)于AboutQt:Custom:自定義標(biāo)準(zhǔn)輸入對(duì)話框提供了4種數(shù)據(jù)類型的輸入:字符串、int、double、下拉列表框P116表相

關(guān)

類類

明靜態(tài)函數(shù)函數(shù)說明QFileDialog類標(biāo)準(zhǔn)文件對(duì)話框getOpenFileName獲得用戶選擇的文件名getSaveFileName獲得用戶保存的文件名getExistingDirectory獲得用戶選擇的已存在的目錄名getOpenFileNames獲得用戶選擇的文件名列表QColorDialog類標(biāo)準(zhǔn)顏色對(duì)話框getColor獲得用戶選擇的顏色值QFontDialog類標(biāo)準(zhǔn)字體對(duì)話框getFont獲得用戶選擇的字體QInputDialog類標(biāo)準(zhǔn)輸入對(duì)話框getText標(biāo)準(zhǔn)字符串輸入對(duì)話框getItem下拉表?xiàng)l目輸入框getIntint類型數(shù)據(jù)輸入對(duì)話框getDoubledouble類型數(shù)據(jù)輸入對(duì)話框QMessageBox類消息對(duì)話框QMessageBox::questionQuestion消息框QMessageBox::informationInformation消息框QMessageBox::warningWarning消息框QMessageBox::criticalCritical消息框QMessageBox::aboutAbout消息框QMessageBox::aboutQtAboutQt消息框5.5消息對(duì)話框:QMessageBox類

5.5消息對(duì)話框:QMessageBox類下面是完成主對(duì)話框的操作過程:(1)在dialog.h中,添加頭文件:#include"msgboxdlg.h"添加private成員變量如下:QPushButton*MsgBtn;添加實(shí)現(xiàn)各種消息對(duì)話框?qū)嵗腗sgBoxDlg類:

MsgBoxDlg*msgDlg;(2)添加privateslots槽函數(shù):voidshowMsgDlg();添加MsgBoxDlg類,添加msgboxdlg.h和msgboxdlg.cpp文件5.5消息對(duì)話框:QMessageBox類(3)在dialog.cpp中,構(gòu)造函數(shù)中的代碼如下:MsgBtn=newQPushButton;//創(chuàng)建控件對(duì)象MsgBtn->setText(tr("標(biāo)準(zhǔn)消息對(duì)話框?qū)嵗?));添加布局管理:mainLayout->addWidget(MsgBtn,3,1);最后添加事件關(guān)聯(lián):connect(MsgBtn,SIGNAL(clicked()),this,SLOT(showMsgDlg()));其中,槽函數(shù)showMsgDlg()的實(shí)現(xiàn)代碼如下:voidDialog::showMsgDlg(){msgDlg=newMsgBoxDlg();msgDlg->show();}5.5消息對(duì)話框:QMessageBox類(4)運(yùn)行該程序后,單擊“標(biāo)準(zhǔn)消息對(duì)話框?qū)嵗卑粹o后,顯示效果如圖5.6所示。5.5.1Question消息框Question消息框使用QMessageBox::question()函數(shù)完成,此函數(shù)形式如下:StandardButtonQMessageBox::question(QWidget*parent, //消息框的父窗口指針constQString&title, //消息框的標(biāo)題欄constQString&text, //消息框的文字提示信息StandardButtonsbuttons=Ok, //注(1),出現(xiàn)的按鈕P131StandardButtondefaultButton=NoButton//注(2),默認(rèn)焦點(diǎn));消息框中可顯示多個(gè)標(biāo)準(zhǔn)按鈕,用“|”連寫P1315.5.1Question消息框完成文件msgboxdlg.cpp中的槽函數(shù)showQuestionMsg()的具體代碼如下:voidMsgBoxDlg::showQuestionMsg(){label->setText(tr("QuestionMessageBox"));switch(QMessageBox::question(this,tr("Question消息框"),tr("您現(xiàn)在已經(jīng)修改完成,是否要結(jié)束程序?"),QMessageBox::Ok|QMessageBox::Cancel,QMessageBox::Ok)){caseQMessageBox::Ok:label->setText(“Questionbutton/Ok”);//標(biāo)簽顯示break;caseQMessageBox::Cancel:label->setText("Questionbutton/Cancel");break;default:break;}return;}在msgboxdlg.cpp的開頭添加頭文件:#include<QMessageBox>5.5.2Information消息框Information消息框使用QMessageBox::information()函數(shù)完成,函數(shù)形式如下:StandardButtonQMessageBox::information(QWidget*parent, //消息框的父窗口指針constQString&title, //消息框的標(biāo)題欄constQString&text, //消息框的文字提示信息StandardButtonsbuttons=Ok, //同上Question消息框的注釋內(nèi)容StandardButtondefaultButton=NoButton//同上Question消息框的注釋內(nèi)容);完成文件msgboxdlg.cpp中的槽函數(shù)showInformationMsg(),具體實(shí)現(xiàn)如下:voidMsgBoxDlg::showInformationMsg(){label->setText(tr("InformationMessageBox"));QMessageBox::information(this,tr("Information消息框"),tr(“這是Information消息框測(cè)試,歡迎您!”));//默認(rèn)為ok按鈕return;}5.5.3Warning消息框Warning消息框使用QMessageBox::warning()函數(shù)完成,函數(shù)形式如下:StandardButtonQMessageBox::warning(QWidget*parent, //消息框的父窗口指針constQString&title, //消息框的標(biāo)題欄constQString&text, //消息框的文字提示信息StandardButtonsbuttons=Ok,//同上Question消息框的注釋內(nèi)容StandardButtondefaultButton=NoButton//同上Question消息框的注釋內(nèi)容);5.5.3Warning消息框完成文件msgboxdlg.cpp中的槽函數(shù)showWarningMsg(),具體實(shí)現(xiàn)如下:voidMsgBoxDlg::showWarningMsg(){label->setText(tr("WarningMessageBox"));switch(QMessageBox::warning(this,tr("Warning消息框"),tr("您修改的內(nèi)容還未保存,是否要保存對(duì)文檔的修改?"),QMessageBox::Save|QMessageBox::Discard|QMessageBox::Cancel,QMessageBox::Save)){caseQMessageBox::Save:label->setText(tr("Warningbutton/Save"));break;caseQMessageBox::Discard:label->setText(tr("Warningbutton/Discard"));break;caseQMessageBox::Cancel:label->setText(tr("Warningbutton/Cancel"));break;default:break;}return;}5.5.4Critical消息框Critical消息框使用QMessageBox::critical()函數(shù)完成,函數(shù)形式如下:StandardButtonQMessageBox::critical(QWidget*parent, //消息框的父窗口指針constQString&title, //消息框的標(biāo)題欄constQString&text, //消息框的文字提示信息StandardButtonsbuttons=Ok, //同上Question消息框的注釋內(nèi)容StandardButtondefaultButton=NoButton//同上Question消息框的注釋內(nèi)容);完成文件msgboxdlg.cpp中的槽函數(shù)showCriticalMsg()的具體實(shí)現(xiàn)如下:voidMsgBoxDlg::showCriticalMsg(){label->setText(tr("CriticalMessageBox"));QMessageBox::critical(this,tr("Critical消息框"),tr("這是一個(gè)Critical消息框測(cè)試!"));//默認(rèn)為ok按鈕return;}5.5.5About消息框About消息框使用QMessageBox::about()函數(shù)完成,函數(shù)形式如下:voidQMessageBox::about(QWidget*parent, //消息框的父窗口指針constQString&title, //消息框的標(biāo)題欄constQString&text //消息框的文字提示信息);完成文件msgboxdlg.cpp中的槽函數(shù)showAboutMsg()的具體實(shí)現(xiàn)如下:voidMsgBoxDlg::showAboutMsg(){label->setText(tr("AboutMessageBox"));QMessageBox::about(this,tr("About消息框"),tr("這是一個(gè)About消息框測(cè)試!"));//默認(rèn)為ok按鈕return;}5.5.6AboutQt消息框AboutQt消息框使用QMessageBox::aboutQt()函數(shù)完成,函數(shù)形式如下:voidQMessageBox::aboutQt(QWidget*parent, //消息框的父窗口指針constQString&title=QString() //消息框的標(biāo)題欄);完成文件msgboxdlg.cpp中的槽函數(shù)showAboutQtMsg(),具體實(shí)現(xiàn)如下:voidMsgBoxDlg::showAboutQtMsg(){label->setText(tr("AboutQtMessageBox"));QMessageBox::aboutQt(this,tr("AboutQt消息框"));return;}

5.6自定義(Custom)消息框自定義(Custom)消息框:消息框的圖標(biāo)、按鈕、內(nèi)容都可以設(shè)定。下面介紹一下自定義(Custom)消息框的具體創(chuàng)建方法:(1)添加該工程的提供主要顯示標(biāo)準(zhǔn)消息對(duì)話框界面的函數(shù)所在的文件,在“DialogExample”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對(duì)話框中選擇“C++Class”選項(xiàng)。單擊“OK”按鈕,彈出“C++ClassWizard”對(duì)話框,在Baseclass后面的下拉列表框中輸入基類名“QDialog”,在Classname后面的文本框中輸入類的名稱“CustomDlg”。(2)單擊“Next”按鈕,單擊“Finish”按鈕,在該工程中就添加了customdlg.h頭文件和customdlg.cpp源文件。

5.6自定義(Custom)消息框(3)打開“msgboxdlg.h”頭文件,自動(dòng)生成的代碼如下:#include<QDialog>classCustomDlg:publicQDialog{public:CustomDlg();};(4)打開“msgboxdlg.cpp”文件,自動(dòng)生成的代碼如下:#include"customdlg.h"CustomDlg::CustomDlg(){}

5.6自定義(Custom)消息框下面是完成主對(duì)話框的操作過程:(1)在dialog.h中添加private成員變量:QPushButton*CustomBtn;QLabel*label;(2)添加privateslots槽函數(shù): voidshowCustomDlg();(3)在dialog.cpp中的構(gòu)造函數(shù)中添加如下代碼:CustomBtn=newQPushButton;CustomBtn->setText(tr("用戶自定義消息對(duì)話框?qū)嵗?)); label=newQLabel; label->setFrameStyle(QFrame::Panel|QFrame::Sunken);以及添加布局管理: mainLayout->addWidget(CustomBtn,4,0);mainLayout->addWidget(label,4,1);在Dialog構(gòu)造函數(shù)的最后添加事件關(guān)聯(lián)代碼: connect(CustomBtn,SIGNAL(clicked()),this,SLOT(showCustomDlg()));其中,dialog.cpp文件中的槽函數(shù)showCustomDlg()實(shí)現(xiàn)的具體代碼。P135

在開始部分加上頭文件: #include<QMessageBox>第5章基本對(duì)話框5.1標(biāo)準(zhǔn)文件對(duì)話框:QFileDialog類5.2標(biāo)準(zhǔn)顏色對(duì)話框:QColorDialog類5.3標(biāo)準(zhǔn)字體對(duì)話框:QFontDialog類5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類5.5消息對(duì)話框:QMessageBox類5.7工具盒QToolBox類5.6自定義(Custom)消息框5.9QPalette類與移動(dòng)圖片綜合實(shí)例5.10可擴(kuò)展對(duì)話框的基本實(shí)現(xiàn)方法5.11不規(guī)則窗體5.12程序啟動(dòng)畫面(QSplashScreen)5.13多文檔的創(chuàng)建5.14使用QtDesigner設(shè)計(jì)對(duì)話框5.8進(jìn)度條(QProgressBar/QProgressDialog)相

關(guān)

類類

明靜態(tài)函數(shù)函數(shù)說明QFileDialog類標(biāo)準(zhǔn)文件對(duì)話框getOpenFileName獲得用戶選擇的文件名getSaveFileName獲得用戶保存的文件名getExistingDirectory獲得用戶選擇的已存在的目錄名getOpenFileNames獲得用戶選擇的文件名列表QColorDialog類標(biāo)準(zhǔn)顏色對(duì)話框getColor獲得用戶選擇的顏色值QFontDialog類標(biāo)準(zhǔn)字體對(duì)話框getFont獲得用戶選擇的字體QInputDialog類標(biāo)準(zhǔn)輸入對(duì)話框getText標(biāo)準(zhǔn)字符串輸入對(duì)話框getItem下拉表?xiàng)l目輸入框getIntint類型數(shù)據(jù)輸入對(duì)話框getDoubledouble類型數(shù)據(jù)輸入對(duì)話框QMessageBox類消息對(duì)話框QMessageBox::questionQuestion消息框QMessageBox::informationInformation消息框QMessageBox::warningWarning消息框QMessageBox::criticalCritical消息框QMessageBox::aboutAbout消息框QMessageBox::aboutQtAboutQt消息框標(biāo)準(zhǔn)基本對(duì)話框所需的靜態(tài)函數(shù)5.7工具盒QToolBox類下面通過實(shí)現(xiàn)類似QQ抽屜效果來介紹QToolBox類的使用,QToolBox提供了一種列狀的層疊窗體,而QToolButton提供了一種快速訪問命令或選擇項(xiàng)的按鈕,通常在工具條中使用。詳細(xì)內(nèi)容見代碼CH502,運(yùn)行效果如圖5.8所示。

5.7工具盒QToolBox類(1)建立一個(gè)空工程。單擊“File”->“NewFileorProject...”,在彈出的對(duì)話框中選擇Projects組下的“EmptyQt4Project”,單擊“OK”按鈕。(2)在彈出的對(duì)話框中對(duì)該工程進(jìn)行命名并選擇保存的路徑,這里命名為“MyQQExample”。單擊“Next”按鈕,最后單擊“Finish”按鈕,完成該文件工程的建立。(3)下面添加該工程的提供主要顯示界面的函數(shù)所在的文件,在“MyQQExample”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對(duì)話框中選擇“C++Class”選項(xiàng)。單擊“OK”按鈕,彈出“C++ClassWizard”對(duì)話框,在Baseclass后面的下拉列表框中輸入基類名“QToolBox”(手工添加),在Classname后面的文本框中輸入類的名稱“Drawer”。(4)單擊“Next”按鈕,單擊“Finish”按鈕,添加drawer.h頭文件和drawer.cpp源文件。5.7工具盒QToolBox類(5)Drawer類繼承自QToolBox類,打開“drawer.h”頭文件,定義實(shí)例中需要用到的各種窗體控件。具體代碼如下:#include<QToolBox>#include<QToolButton>classDrawer:publicQToolBox{Q_OBJECT

public:Drawer(QWidget*parent=0,Qt::WindowFlagsf=0);

private:QToolButton*toolBtn1_1;QToolButton*toolBtn1_2;QToolButton*toolBtn1_3;QToolButton*toolBtn1_4;QToolButton*toolBtn1_5;QToolButton*toolBtn2_1;QToolButton*toolBtn2_2;QToolButton*toolBtn3_1;QToolButton*toolBtn3_2;};5.7工具盒QToolBox類(6)打開“drawer.cpp”文件,添加代碼。P138(7)在“drawer.cpp”文件一開始加入以下頭文件:#include<QGroupBox>#include<QVBoxLayout>(8)下面添加該工程的入口函數(shù)所在的文件(main.cpp文件),在“MyQQExample”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對(duì)話框中選擇“C++SourceFile”選項(xiàng),單擊“OK”按鈕,彈出“NewC++SourceFile”對(duì)話框,在name后面的文本框中輸入“main.cpp”。單擊“Next”按鈕,單擊“Finish”按鈕,添加main函數(shù)。5.7工具盒QToolBox類(9)打開“main.cpp”文件,添加以下代碼:#include<QtGui/QApplication>#include"drawer.h"#include<QTextCodec>intmain(intargc,char*argv[]){QApplicationa(argc,argv);QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//顯示中文Drawerdrawer;drawer.show();returna.exec();}(10)編譯運(yùn)行此程序,此時(shí)未看到加載的圖片,是因?yàn)閳D片放置的路徑不是默認(rèn)的,只要將所用到的圖片放置到該工程下的debug文件夾下即可。最后運(yùn)行一下程序,顯示效果如圖5.8所示。用designer設(shè)計(jì)利用控件ToolBox和ToolButtonQT圖片的顯示問題添加.qrc資源文件,然后把圖片文件添加進(jìn)去就可以

5.8進(jìn)度條(QProgressBar/QProgressDialog)Qt提供了兩種顯示進(jìn)度條的方式,一種是QprogressBar(如圖5.9所示),提供了一種橫向或縱向顯示進(jìn)度的控件表示方式,用來描述任務(wù)的完成情況;另一種是QProgressDialog(如圖5.10所示),提供了一種針對(duì)慢速過程的進(jìn)度對(duì)話框表示方式,用于描述任務(wù)完成的進(jìn)度情況。

系統(tǒng)繁忙時(shí)的響應(yīng)當(dāng)我們調(diào)用QApplication::exec()時(shí),Qt就開始了事件循環(huán)。啟動(dòng)時(shí),Qt發(fā)出顯示和繪制事件,把控件顯示出來。然后,事件循環(huán)就開始了,不停檢查是否有事件發(fā)生,然后把事件分派到程序中的QObject對(duì)象。如果在處理某一個(gè)事件時(shí)花費(fèi)了很多時(shí)間,這期間用戶界面就不會(huì)有任何響應(yīng)。一個(gè)方法是多線程:一個(gè)線程處理用戶界面,另一個(gè)線程進(jìn)行文件保存或者其他耗時(shí)的操作。還有一個(gè)簡(jiǎn)單的方法是在保存文件的過程中多次調(diào)用QApplication::processEvents()。調(diào)用時(shí)Qt就會(huì)處理暫停的事件,然后返回繼續(xù)保存文件。其實(shí),QApplication::exec()也是一個(gè)調(diào)用processEvents()的while循環(huán)。5.8進(jìn)度條(QProgressBar/QProgressDialog)具體實(shí)現(xiàn)步驟如下:(1)建立一個(gè)工程。單擊“File”->“NewFileorProject...”,在彈出的對(duì)話框中選擇Projects組下的“Qt4GuiApplication”,單擊“OK”按鈕。(2)在彈出的對(duì)話框中對(duì)該工程進(jìn)行命名并選擇保存工程的路徑,這里將工程命名(Name)為Progress,單擊“Next”按鈕,再次單擊“Next”按鈕。在“Classname”后面的文本框中輸入ProgressDlg,在基類“Baseclass”后面的下拉列表框中選擇“QDialog”選項(xiàng),取消“Generateform”復(fù)選框的選中狀態(tài),單擊“Next”按鈕,最后單擊“Finish”按鈕,完成該文件工程的建立。5.8進(jìn)度條(QProgressBar/QProgressDialog)(3)ProgressDlg類繼承自QDialog類,打開“progressdlg.h”頭文件,添加如下加黑代碼://添加的頭文件#include<QLabel>#include<QLineEdit>#include<QProgressBar>#include<QComboBox>#include<QPushButton>#include<QGridLayout>classProgressDlg:publicQDialog{Q_OBJECTpublic:ProgressDlg(QWidget*parent=0);privateslots:voidstartProgress();private:QLabel*FileNum;QLineEdit*FileNumLineEdit;QLabel*ProgressType;QComboBox*comboBox;QProgressBar*progressBar;QPushButton*starBtn;QGridLayout*mainLayout;};5.8進(jìn)度條(QProgressBar/QProgressDialog)(4)構(gòu)造函數(shù)主要完成主界面的初始化工作,包括各控件的創(chuàng)建、布局以及信號(hào)/槽的連接。打開“progressdlg.cpp”文件,添加代碼。P143其中,槽函數(shù)startProgress()的具體代碼。P143(5)打開“main.cpp”文件,添加以下加黑代碼以顯示中文:#include<QTextCodec>intmain(intargc,char*argv[]){QApplicationa(argc,argv);QTextCodec::setCodecForTr(QTextCodec::codecForLocale());ProgressDlgw;w.show();returna.exec();}(6)運(yùn)行程序,查看顯示效果。QprogressBar重要屬性P145可視化控件QprogressBarQprogressDialog重要屬性5.9QPalette類與移動(dòng)圖片綜合實(shí)例5.9.1QPalette類(略)調(diào)色板類QPalette:用于管理對(duì)話框的外觀顯示。每個(gè)窗體或控件都包含一個(gè)QPalette對(duì)象。該類有兩個(gè)基本的概念,一個(gè)是ColorGroup,另一個(gè)是ColorRole。其中,ColorGroup指的是以下3種不同的狀態(tài):

QPalette::Active:獲得焦點(diǎn)的狀態(tài);

QPalette::Inactive:未獲得焦點(diǎn)的狀態(tài);

QPalette::Disable:不可用狀態(tài)。ColorRole指的是顏色主題,即對(duì)窗體中不同部位顏色的分類。例如:QPalette::Window是指背景色,QPalette::WindowText指的是前景色等等。QPalette類使用最多,最重要的函數(shù)是setColor()函數(shù),其原型如下:voidQPalette::setColor(ColorGroup

group,ColorRole

role,const

QColor&color);對(duì)主題顏色進(jìn)行設(shè)置的同時(shí),還區(qū)分了狀態(tài),即對(duì)某個(gè)主題在某個(gè)狀態(tài)下的顏色進(jìn)行了設(shè)置。voidQPalette::setColor(ColorRole

role,const

QColor&color);5.9.1QPalette類只對(duì)某個(gè)主題的顏色進(jìn)行設(shè)置,并不區(qū)分狀態(tài)。QPalette類同時(shí)還提供了setBrush()函數(shù),通過畫刷的設(shè)置來對(duì)顯示進(jìn)行更改,這樣就有可能使用圖片而不僅是單一的顏色來對(duì)主題進(jìn)行填充了。Qt之前版本中有關(guān)背景色設(shè)置的函數(shù)如setBackgroundColor()或前景色設(shè)置的函數(shù)如setForegroundColor()在Qt4中都被廢止,統(tǒng)一由QPalette類進(jìn)行管理。如setBackgroundColor()函數(shù)可由以下語句代替:xxx->setAutoFillBackground(true);QPalettep=xxx->palette();p.setColor(QPalette::Window,color);//p.setBrush(QPalette::Window,brush);xxx->setPalette(p);QTimer類P147QTimer類提供了定時(shí)器信號(hào)和單觸發(fā)定時(shí)器。使用:創(chuàng)建一個(gè)QTimer,使用start()來啟動(dòng)。當(dāng)定時(shí)時(shí)間到,它將會(huì)發(fā)射timeout()信號(hào)。把它的timeout()連接到適當(dāng)?shù)牟邸?/p>

intQTimer::start(int

msec,bool

sshot=FALSE)

開始一個(gè)msec毫秒定時(shí)的定時(shí)器。如果sshot為真,這個(gè)定時(shí)器將只會(huì)被激活一次,否則它將會(huì)持續(xù)到它被停止。實(shí)例:

QTimer*timer=newQTimer(myObject);connect(timer,SIGNAL(timeout()),myObject,SLOT(timerDone()));timer->start(1000,TRUE);//1秒單觸發(fā)定時(shí)器

5.9.2QTime類P156QTime的currentTime()函數(shù)獲取當(dāng)前的系統(tǒng)時(shí)間;QTime的toString()函數(shù)把獲取的當(dāng)前時(shí)間轉(zhuǎn)換成字符串類型。為便于顯示,toString()函數(shù)的參數(shù)需指定轉(zhuǎn)換后時(shí)間的顯示格式。

H/h:小時(shí)(若使用H表示小時(shí),則無論何時(shí)都以24小時(shí)制顯示小時(shí);若使用h表示小時(shí),則當(dāng)同時(shí)指定AM/PM時(shí),采用12小時(shí)制顯示小時(shí),其他情況下仍采用24小時(shí)制進(jìn)行顯示)。

m:分鐘。

s:秒鐘。

AP/A:顯示AM或PM。

ap/a:顯示am或pm。例:H:mm:ssA22:30:08PM

hh:mm:sa10:30:8pm查聯(lián)機(jī)手冊(cè)分析代碼P147第5章基本對(duì)話框5.1標(biāo)準(zhǔn)文件對(duì)話框:QFileDialog類5.2標(biāo)準(zhǔn)顏色對(duì)話框:QColorDialog類5.3標(biāo)準(zhǔn)字體對(duì)話框:QFontDialog類5.4標(biāo)準(zhǔn)輸入對(duì)話框:QInputDialog類5.5消息對(duì)話框:QMessageBox類5.7工具盒QToolBox類5.6自定義(Custom)消息框5.9QPalette類與移動(dòng)圖片綜合實(shí)例5.10可擴(kuò)展對(duì)話框的基本實(shí)現(xiàn)方法5.11不規(guī)則窗體5.12程序啟動(dòng)畫面(QSplashScreen)5.13多文檔的創(chuàng)建5.14使用QtDesigner設(shè)計(jì)對(duì)話框5.8進(jìn)度條(QProgressBar/QProgressDialog)

5.10可擴(kuò)展對(duì)話框的基本實(shí)現(xiàn)方法可擴(kuò)展對(duì)話框的基本實(shí)現(xiàn)方法即是利用setSizeConstraint(QLayout::SetFixedSize)方法使對(duì)話框尺寸保持相對(duì)固定。其中,最關(guān)鍵的部分有以下兩點(diǎn):

在整個(gè)對(duì)話框的構(gòu)造函數(shù)中調(diào)用。layout->setSizeConstraint(QLayout::SetFixedSize);這個(gè)設(shè)置保證了對(duì)話框的尺寸保持相對(duì)固定,始終是各控件組合的默認(rèn)尺寸,在擴(kuò)展部分顯示時(shí),對(duì)話框尺寸根據(jù)需要顯示的控件進(jìn)行擴(kuò)展調(diào)整,而在擴(kuò)展部分隱藏時(shí),對(duì)話框尺寸又恢復(fù)至初始狀態(tài)。

切換按鈕的實(shí)現(xiàn)。整個(gè)窗體可擴(kuò)展的工作都是在此按鈕所連接的槽函數(shù)中完成。

5.10可擴(kuò)展對(duì)話框的基本實(shí)現(xiàn)方法下面通過一個(gè)簡(jiǎn)單的填寫資料的例子介紹具體做法,通常情況下,只需填寫姓

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論