




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第3章窗口部件3.1基礎(chǔ)窗口部件QWidget3.2對話框QDialog3.3其他窗口部件3.4小結(jié)1前一章中第一次建立helloworld程序時(shí),曾看到QtCreator提供的默認(rèn)基類只有QMainWindow、QWidget和QDialog三種。 1)QMainWindow是帶有菜單欄和工具欄的主窗口類, 2)QDialog是各種對話框的基類,而它們二者全部繼承自QWidget。不僅如此,其實(shí)所有的窗口部件都繼承自QWidget。23.1基礎(chǔ)窗口部件QWidgetQWidget類是所有用戶界面對象的基類,被稱為基礎(chǔ)窗口部件。
QWidget繼承自QObject類和QPaintDevice類。QObject是所有支持Qt對象模型(QtObjectModel)的Qt對象的基類QPaintDevice是所有可以繪制的對象的基類。
本節(jié)內(nèi)容:窗口、子部件以及窗口類型窗口幾何布局程序調(diào)試3窗口、子部件以及窗口類型//新建QWidget類對象,默認(rèn)parent參數(shù)是0,所以它是個(gè)窗口QWidget*widget=newQWidget();//設(shè)置窗口標(biāo)題widget->setWindowTitle(QObject::tr("我是widget"));//新建QLabel對象,默認(rèn)parent參數(shù)是0,所以它是個(gè)窗口QLabel*label=newQLabel();label->setWindowTitle(QObject::tr("我是label"));//設(shè)置要顯示的信息label->setText(QObject::tr("label:我是個(gè)窗口"));//改變部件大小,以便能顯示出完整的內(nèi)容label->resize(180,20);//label2指定了父窗口為widget,所以不是窗口
QLabel*label2=newQLabel(widget);label2->setText(QObject::tr("label2:我不是獨(dú)立窗口,只是widget的子部件"));label2->resize(250,20);//在屏幕上顯示出來label->show();widget->show();4在程序中定義了一個(gè)QWidget類對象的指針widget和兩個(gè)QLabel對象指針label與label2,其中l(wèi)abel沒有父窗口,而label2在widget中,widget是其父窗口。
窗口部件(Widget)這里簡稱部件,是Qt中建立用戶界面的主要元素。像主窗口、對話框、標(biāo)簽、還有以后要介紹到的按鈕、文本輸入框等都是窗口部件。在Qt中,把沒有嵌入到其他部件中的部件稱為窗口,一般的,窗口都有邊框和標(biāo)題欄,就像程序中的widget和label一樣。QMainWindow和大量的QDialog子類是最一般的窗口類型。窗口就是沒有父部件的部件,所以又稱為頂級部件(top-levelwidget)。與其相對的是非窗口部件,又稱為子部件(childwidget)。在Qt中大部分部件被用作子部件,它們嵌入在別的窗口中,例如程序中的label2。
5窗口類型前面講到窗口一般都有邊框和標(biāo)題欄,但不是必需的:QWidget的構(gòu)造函數(shù)有兩個(gè)參數(shù):QWidget*parent=0和Qt::WindowFlagsf=0;前面的parent就是指父窗口部件,默認(rèn)值為0,表明沒有父窗口;而后面的f參數(shù)是Qt::WindowFlags類型的,它是一個(gè)枚舉類型,分為窗口類型(WindowType)和窗口標(biāo)志(WindowFlags。前者可以定義窗口的類型,比如我們這里f=0,表明使用了Qt::Widget一項(xiàng),這是QWidget的默認(rèn)類型,這種類型的部件如果有父窗口,那么它就是子部件,否則就是獨(dú)立的窗口。6例如:使用其中的Qt::Dialog和Qt::SplashScreen,更改程序中的新建對象的那兩行代碼:QWidget*widget=newQWidget(0,Qt::Dialog);QLabel*label=newQLabel(0,Qt::SplashScreen);更改后,窗口的樣式發(fā)生了改變,一個(gè)是對話框類型,一個(gè)是歡迎窗口類型。再次更改那兩行代碼:QWidget*widget=newQWidget(0,Qt::Dialog|Qt::FramelessWindowHint);QLabel*label=newQLabel(0,Qt::SplashScreen|Qt::WindowStaysOnTopHint); Qt::FramelessWindowHint用來產(chǎn)生一個(gè)沒有邊框的窗口Qt::WindowStaysOnTopHint用來使該窗口停留在所有其它窗口上面。7窗口幾何布局
對于窗口的大小和位置,根據(jù)是否包含邊框和標(biāo)題欄兩種情況,要用不同的函數(shù)來獲取它們的數(shù)值。這里的函數(shù)分為兩類,一類是包含框架的,一類是不包含框架的:包含框架:x()、y()、frameGeometry()、pos()和move()等函數(shù);不包含框架:geometry()、width()、height()、rect()和size()等函數(shù)。8程序調(diào)試下面在講解窗口幾何布局的幾個(gè)函數(shù)的同時(shí),講解一下程序調(diào)試方面的內(nèi)容。
將主函數(shù)內(nèi)容更改如下:#include<QApplication>#include<QWidget>intmain(intargc,char*argv[]){QApplicationa(argc,argv);QWidgetwidget;intx=widget.x();inty=widget.y();QRectgeometry=widget.geometry();QRectframe=widget.frameGeometry();returna.exec();}x()、y()分別返回部件的位置坐標(biāo)的x、y值,它們的默認(rèn)值為0。而geometry()和frameGeometry()函數(shù)分別返回沒有邊框和包含邊框的窗口框架矩形的值,其返回值是QRect類型的,就是一個(gè)矩形,它的形式是(位置坐標(biāo),大小信息),也就是(x,y,寬,高)。9
下面在intx=widget.x();一行代碼的標(biāo)號前面點(diǎn)擊鼠標(biāo)左鍵來設(shè)置斷點(diǎn)。
所謂斷點(diǎn),就是程序運(yùn)行到該行代碼時(shí)會(huì)暫停下來,從而可以查看一些信息,如變量值等。要取消斷點(diǎn),只要在那個(gè)斷點(diǎn)上再點(diǎn)擊一下就可以了。設(shè)置好斷點(diǎn)后便可以按下F5或者左下角的調(diào)試按鈕開始調(diào)試。在程序構(gòu)建時(shí)可能會(huì)出現(xiàn)警告,那是因?yàn)槲覀兌x了變量卻沒有使用造成的,不用管它。
10調(diào)試模式11下面對調(diào)試模式的幾個(gè)按鈕和窗口進(jìn)行簡單介紹:①繼續(xù)按鈕。程序在斷點(diǎn)處停了下來,按下繼續(xù)按鈕后,程序便會(huì)像正常運(yùn)行一樣,執(zhí)行后面的代碼,直到遇到下一個(gè)斷點(diǎn),或者程序結(jié)束。②停止調(diào)試按鈕。按下該按鈕后結(jié)束調(diào)試。③單步跳過按鈕。直接執(zhí)行本行代碼,然后指向下一行代碼。④單步進(jìn)入按鈕。進(jìn)入調(diào)用的函數(shù)內(nèi)部。⑤單步跳出按鈕。當(dāng)進(jìn)入函數(shù)內(nèi)部時(shí),跳出該函數(shù),一般與單步進(jìn)入配合使用。12從變量監(jiān)視器中可以看到x、y、geometry和frame四個(gè)變量初始值都是一個(gè)隨機(jī)未知數(shù)。等到調(diào)試完成后,x、y的值均為0,這是它們的默認(rèn)值。而geometry的值為640x480+0+0,frame的值為639x479+0+0?,F(xiàn)在對這些值還不是很清楚,不過,為什么x、y的值會(huì)是0呢?我們可能會(huì)想到,應(yīng)該是窗口沒有顯示的原因,那么就更改代碼,讓窗口先顯示出來,再看這些值。在QWidgetwidget;一行代碼后添加一行代碼:widget.show();注意:widget.show();不能加在widget.frameGeometry()之后,否則值還是不變。程序調(diào)試13使用qDebug()函數(shù)一在程序調(diào)試過程中也常用qDebug()函數(shù),它可以將調(diào)試信息直接輸出到控制臺,在QtCreator中是輸出到應(yīng)用程序輸出欄。例如:QWidgetwidget;widget.resize(400,300);//設(shè)置窗口大小widget.move(200,100);//設(shè)置窗口位置widget.show();intx=widget.x();qDebug("x:%d",x);//輸出x的值inty=widget.y();qDebug("y:%d",y);QRectgeometry=widget.geometry();QRectframe=widget.frameGeometry();qDebug()<<"geometry:"<<geometry<<"frame:"<<frame;14這里使用了兩種輸出方式:方式一:直接將字符串當(dāng)做參數(shù)傳給qDebug()函數(shù),例如上面使用這種方法輸出x和y的值(不需要<QDebug>頭文件)。方式二:使用輸出流的方式一次輸出多個(gè)值,它們的類型可以不同,例如程序中輸出geometry和frame的值(需要<QDebug>頭文件)。說明:因?yàn)榈谝环N方法很麻煩,所以經(jīng)常使用的是第二種方法。從輸出信息中,可以清楚的看到幾個(gè)函數(shù)的含義了。
15qDebug()函數(shù)的第二種方法時(shí)還可以讓輸出自動(dòng)換行。在returna.exec();一行代碼前添加如下代碼:qDebug()<<"pos:"<<widget.pos()<<endl<<"rect:"<<widget.rect()<<endl<<"size:"<<widget.size()<<endl<<"width:"<<widget.width()<<endl<<"height:"<<widget.height();這里的“endl”就是起換行作用的。pos()函數(shù)返回窗口的位置,是一個(gè)坐標(biāo)值,x()、y()函數(shù)返回的就是它的x、y坐標(biāo)值;rect()函數(shù)返回不包含邊框的窗口內(nèi)部矩形,在窗口內(nèi)部,左上角是(0,0)點(diǎn);size()函數(shù)返回不包含邊框的窗口大小信息;width()和height()函數(shù)分別返回窗口內(nèi)部的寬和高。從數(shù)據(jù)可以看到,調(diào)整窗口大小的resize()函數(shù)是設(shè)置的不包含邊框的窗口大小。163.2對話框QDialog
本節(jié)先從對話框的介紹講起,然后講述兩種不同類型的對話框,再講解一個(gè)有多個(gè)窗口組成并且窗口間可以相互切換的程序,最后介紹一下Qt提供的幾個(gè)標(biāo)準(zhǔn)對話框。多窗口切換模態(tài)和非模態(tài)對話框標(biāo)準(zhǔn)對話框17多窗口切換
本節(jié)會(huì)涉及如下內(nèi)容:開始認(rèn)識信號和槽信號和槽的關(guān)聯(lián)方式從登陸對話框顯示主界面的方法18開始認(rèn)識信號和槽在Qt中使用信號和槽機(jī)制來完成對象之間的協(xié)同操作。簡單來說,信號和槽都是函數(shù),比如按下窗口上的一個(gè)按鈕后想要彈出一個(gè)對話框,那么就可以將這個(gè)按鈕的單擊信號和我們定義的槽關(guān)聯(lián)起來,在這個(gè)槽中可以創(chuàng)建一個(gè)對話框,并且顯示它。這樣,當(dāng)單擊這個(gè)按鈕時(shí)就會(huì)發(fā)射信號,進(jìn)而執(zhí)行我們的槽來顯示一個(gè)對話框。19關(guān)聯(lián)方式一:在設(shè)計(jì)模式關(guān)聯(lián)首先添加自定義對話框類MyDialog。在設(shè)計(jì)模式中向窗口上添加兩個(gè)PushButton,并且分別更改其顯示文本為“進(jìn)入主界面”和“退出程序”。點(diǎn)擊設(shè)計(jì)器上方的“編輯信號/槽”圖標(biāo),或者按下快捷鍵F4,這時(shí)便進(jìn)入了部件的信號和槽的編輯模式。在“退出程序”按鈕上按住鼠標(biāo)左鍵,然后拖動(dòng)到窗口界面上,這時(shí)松開鼠標(biāo)左鍵。在彈出的配置連接對話框中,選中下面的“顯示從QWidget繼承的信號和槽”選項(xiàng),然后在左邊的QPushButton欄中選擇信號clicked(),在右邊的QDialog欄中選擇對應(yīng)的槽close(),完成后按下“確定”。20關(guān)聯(lián)方式二:自動(dòng)關(guān)聯(lián)該按鈕上點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單上選擇“轉(zhuǎn)到槽”,然后在彈出的對話框中選擇clicked()信號,并按“確定”。這時(shí)便會(huì)進(jìn)入代碼編輯模式,并且定位到自動(dòng)生成的on_pushButton_clicked()槽中。在其中添加代碼:voidMyDialog::on_pushButton_clicked(){accept();}21關(guān)聯(lián)方式三:使用connect()關(guān)聯(lián)mywidget.h文件寫上槽的聲明:publicslots:voidshowChildDialog();在mywidget.cpp文件中將槽的實(shí)現(xiàn)(可以先單擊,然后使用Alt+Enter鍵):voidMyWidget::showChildDialog(){QDialog*dialog=newQDialog(this);dialog->show();}在mywidget.cpp文件的MyWidget類的構(gòu)造函數(shù)中使用connect()關(guān)聯(lián)按鈕單擊信號和自定義的槽如下:connect(ui->showChildButton,SIGNAL(clicked()),this,SLOT(showChildDialog()));22說明:這里自定義了一個(gè)槽,槽必須聲明為slots,這里使用了publicslots,表明這個(gè)槽可以在類外被調(diào)用。clicked()信號在QPushButton類中進(jìn)行了定義,而connect()是QObject類中的函數(shù),因?yàn)槲覀兊念惱^承自QObject,所以可以直接使用它。connect()函數(shù)中的四個(gè)參數(shù)分別是:發(fā)送信號的對象、發(fā)送的信號、接收信號的對象和要執(zhí)行的槽,而信號和槽要分別使用SIGNAL()和SLOT()宏括起來。
23模態(tài)和非模態(tài)對話框模態(tài)對話框就是在我們沒有關(guān)閉它之前,不能再與同一個(gè)應(yīng)用程序的其他窗口進(jìn)行交互,比如新建項(xiàng)目時(shí)彈出的對話框。要想使一個(gè)對話框成為模態(tài)對話框,只需要調(diào)用它的exec()函數(shù):QDialogdialog(this);dialog.exec();而對于非模態(tài)對話框,既可以與它交互,也可以與同一程序中的其他窗口交互,例如MicrosoftWord中的查找替換對話框。要使一個(gè)對話框成為非模態(tài)對話框,我們就可以使用new操作來創(chuàng)建,然后使用show()函數(shù)來顯示。
QDialog*dialog=newQDialog(this);dialog->show();24使用show()函數(shù)也可以建立模態(tài)對話框,只需在其前面使用setModal()函數(shù)即可。例如:QDialog*dialog=newQDialog(this);dialog->setModal(true);dialog->show(); 現(xiàn)在運(yùn)行程序,可以看到生成的對話框是模態(tài)的。但是,它與用exec()函數(shù)時(shí)的效果是不一樣的。這是因?yàn)檎{(diào)用完show()函數(shù)后會(huì)立即將控制權(quán)交給調(diào)用者,那么程序可以繼續(xù)往下執(zhí)行。而調(diào)用exec()函數(shù)卻不是這樣,它只有當(dāng)對話框被關(guān)閉時(shí)才會(huì)返回。與setModal()函數(shù)相似的還有一個(gè)setWindowModality()函數(shù),它有一個(gè)參數(shù)來設(shè)置模態(tài)對話框要阻塞的窗口類型,可以是:Qt::NonModal(不阻塞任何窗口,就是非模態(tài)),Qt::WindowModal(阻塞它的父窗口和所有祖先窗口以及它們的子窗口),Qt::ApplicationModal(阻塞整個(gè)應(yīng)用程序的所有窗口)。而setModal()函數(shù)默認(rèn)設(shè)置的是Qt::ApplicationModal。25標(biāo)準(zhǔn)對話框Qt提供了一些常用的對話框類型,它們?nèi)坷^承自QDialog類,并增加了自己的特色功能,比如獲取顏色、顯示特定信息等。顏色對話框文件對話框字體對話框輸入對話框消息對話框進(jìn)度對話框錯(cuò)誤信息對話框向?qū)υ捒?6標(biāo)準(zhǔn)對話框:27標(biāo)準(zhǔn)文件對話框getOpenFileName()函數(shù)返回用戶選擇的文件名。但是當(dāng)用戶在選擇文件時(shí),如果選擇“取消”(Cancel),則返回一個(gè)空串。在此只詳細(xì)說明getOpenFileName()靜態(tài)函數(shù)各個(gè)參數(shù)的作用,其他文件對話框類中相關(guān)的靜態(tài)函數(shù)的參數(shù)有與其類似之處。其函數(shù)形式如下:QStringQFileDialog::getOpenFileName(QWidget*parent=0, //標(biāo)準(zhǔn)文件對話框的父窗口constQString&caption=QString(), //標(biāo)準(zhǔn)文件對話框的標(biāo)題名constQString&dir=QString(), //注(1)constQString&filter=QString(), //注(2)QString*selectedFilter=0, //用戶選擇的過濾器通過此參數(shù)返回Optionsoptions=0//選擇顯示文件名的格式,默認(rèn)是同時(shí)顯示目錄與文件名)28QStrings=QFileDialog::getOpenFileName(this,"openfiledialog","/","C++files(*.cpp)::Cfiles(*.c)::Headfiles(*.h)");fileLineEdit->setText(s);添加頭文件:#include<QFileDialog>標(biāo)準(zhǔn)文件對話框29顏色對話框例如:QColorcolor=QColorDialog::getColor(Qt::red,this,tr("顏色對話框"));qDebug()<<"color:"<<color;這里使用了QColorDialog的靜態(tài)函數(shù)getColor()來獲取顏色,它的三個(gè)參數(shù)的作用分別是:設(shè)置初始顏色、父窗口和對話框標(biāo)題。這里的Qt::red,是Qt預(yù)定義的顏色對象。如果想要更靈活的設(shè)置時(shí),可以先創(chuàng)建對象,然后進(jìn)行各項(xiàng)設(shè)置:voidMyWidget::on_pushButton_clicked(){QColorDialogdialog(Qt::red,this);//創(chuàng)建對象dialog.setOption(QColorDialog::ShowAlphaChannel);//顯示alpha選項(xiàng)dialog.exec();//以模態(tài)方式運(yùn)行對話框QColorcolor=dialog.currentColor();//獲取當(dāng)前顏色qDebug()<<"color:"<<color;//輸出顏色信息}30標(biāo)準(zhǔn)字體對話框:標(biāo)準(zhǔn)字體對話框QFontDialog類的一個(gè)靜態(tài)函數(shù)getFont()函數(shù),返回用戶選擇的字體,下面是getFont()函數(shù)形式:QFontgetFont(bool*ok, //注QWidget*parent=0 //標(biāo)準(zhǔn)字體對話框的父窗口);例: boolok; QFontf=QFontDialog::getFont(&ok);if(ok){fontLineEdit->setFont(f);}
31自學(xué)內(nèi)容:自學(xué)其他標(biāo)準(zhǔn)對話框的使用。32程序啟動(dòng)畫面(QSplashScreen)當(dāng)運(yùn)行程序時(shí),在顯示屏的中央出現(xiàn)一個(gè)啟動(dòng)畫面,經(jīng)過一段時(shí)間,應(yīng)用程序完成初始化工作后,啟動(dòng)畫面隱去,出現(xiàn)程序的主窗口界面。(4)啟動(dòng)畫面主要在main()函數(shù)中實(shí)現(xiàn),添加以下加黑代碼:#include<QPixmap>#include<QSplashScreen>intmain(intargc,char*argv[]){ QApplicationa(argc,argv);
QPixmappixmap(":/res/myShow.jpg"); QSplashScreensplash(pixmap); splash.show();
cessEvents(); MainWindoww; w.show();
splash.finish(&w); returna.exec();}332023/1/31下面通過實(shí)現(xiàn)類似QQ抽屜效果來介紹QToolBox類的使用,QToolBox提供了一種列狀的層疊窗體,而QToolButton提供了一種快速訪問命令或選擇項(xiàng)的按鈕,通常在工具條中使用。運(yùn)行效果如圖所示。
QToolBox類342023/1/31(1)建立一個(gè)空工程。單擊“File”->“NewFileorProject...”,在彈出的對話框中選擇Projects組下的“EmptyQt4Project”,單擊“OK”按鈕。(2)在彈出的對話框中對該工程進(jìn)行命名并選擇保存的路徑,這里命名為“MyQQExample”。單擊“Next”按鈕,最后單擊“Finish”按鈕,完成該文件工程的建立。(3)下面添加該工程的提供主要顯示界面的函數(shù)所在的文件,在“MyQQExample”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對話框中選擇“C++Class”選項(xiàng)。單擊“OK”按鈕,彈出“C++ClassWizard”對話框,在Baseclass后面的下拉列表框中輸入基類名“QToolBox”(手工添加),在Classname后面的文本框中輸入類的名稱“Drawer”。(4)單擊“Next”按鈕,單擊“Finish”按鈕,添加drawer.h頭文件和drawer.cpp源文件。創(chuàng)建步驟352023/1/31(4)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_4;QToolButton*toolBtn2_1;QToolButton*toolBtn2_2;QToolButton*toolBtn3_1;QToolButton*toolBtn3_2;};創(chuàng)建步驟362023/1/31(6)打開“drawer.cpp”文件,添加代碼。(7)在“drawer.cpp”文件一開始加入以下頭文件:#include<QGroupBox>#include<QVBoxLayout>(8)下面添加該工程的入口函數(shù)所在的文件(main.cpp文件),在“MyQQExample”項(xiàng)目名上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“AddNew...”菜單項(xiàng),在彈出的對話框中選擇“C++SourceFile”選項(xiàng),單擊“OK”按鈕,彈出“NewC++SourceFile”對話框,在name后面的文本框中輸入“main.cpp”。單擊“Next”按鈕,單擊“Finish”按鈕,添加main函數(shù)。創(chuàng)建步驟372023/1/31(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)行一下程序,顯示效果如圖所示。創(chuàng)建步驟383.3其他窗口部件Qt提供了一些常用的窗口部件:QFrame類族按鈕部件行編輯器數(shù)值設(shè)定框滑塊部件39QFrame類族QFrame類是帶有邊框的部件的基類。它的子類有我們最為常用的標(biāo)簽部件QLabel,另外還有QLCDNumber、QSplitter、QStackedWidget、QToolBox和QAbstractScrollArea類。
帶邊框部件最主要的特點(diǎn)就是可以有一個(gè)明顯的邊界框架。QFrame類的主要功能也就是用來實(shí)現(xiàn)不同的邊框效果,這主要是由邊框形狀(Shape)和邊框陰影(Shadow)組合來形成的。
40例:QLabel
除了最常用的顯示文本外,還可以顯示圖片:ui->label->setPixmap(QPixmap("F:/logo.png"));還可以顯示gif動(dòng)態(tài)圖片:QMovie*movie=newQMovie("F:/donghua.gif");ui->label->setMovie(movie);//在標(biāo)簽中添加動(dòng)畫movie->start();41按鈕部件QAbstractButton類是按鈕部件的抽象基類,提供了按鈕的通用功能。它的子類包括:復(fù)選框QCheckBox標(biāo)準(zhǔn)按鈕QPushButton單選框按鈕QRadioButton工具按鈕QToolButton。42例:QPushButton下面代碼為三個(gè)按鈕改變了顯示文本在一個(gè)字母前加上“&”符號,那么就可以將這個(gè)按鈕的加速鍵設(shè)置為Alt加上這個(gè)字母。如果我們要在文本中顯示“&”符號本身,那么可以使用“&&”可以使用setIcon()函數(shù)來給按鈕添加圖標(biāo),這里圖片文件使用了相對路徑(當(dāng)然這個(gè)也可以在設(shè)計(jì)模式通過更改icon屬性來實(shí)現(xiàn))。對于pushBtn3,為其添加了下拉菜單。ui->pushBtn1->setText(tr("&nihao"));//這樣便指定了Alt+N為加速鍵ui->pushBtn2->setText(tr("幫助(&H)"));ui->pushBtn2->setIcon(QIcon("../image/help.png"));ui->pushBtn3->setText(tr("z&oom"));QMenu*menu=newQMenu(this);menu->addAction(QIcon("../image/zoom-in.png"),tr("放大"));ui->pushBtn3->setMenu(menu);
43行編輯器行編輯器QLineEdit部件是一個(gè)單行的文本編輯器,它允許用戶輸入和編輯單行的純文本內(nèi)容,而且提供了一系列有用的功能,包括撤銷與恢復(fù)、剪切和拖放等操作。例如:顯示模式
輸入掩碼
輸入驗(yàn)證
自動(dòng)補(bǔ)全
44例:自動(dòng)補(bǔ)全功能
在QLineEdit中也提供了強(qiáng)大的自動(dòng)補(bǔ)全功能,這是利用QCompleter類實(shí)現(xiàn)的:QStringListwordList;wordList<<"Qt"<<"QtCreator"<<tr("你好");//新建自動(dòng)完成器QCompleter*completer=newQCompleter(wordList,this);//設(shè)置大小寫不敏感completer->setCaseSensitivity(Qt::CaseInsensitive);ui->lineEdit4->setCompleter(completer);45數(shù)值設(shè)定框
QAbstractSpinBox類是一個(gè)抽象基類,它提供了一個(gè)數(shù)值設(shè)定框和一個(gè)行編輯器來顯示設(shè)定值。它有三個(gè)子類:QDateTimeEdit(日期時(shí)間設(shè)定)QSpinBox(整數(shù)設(shè)定)QDoubl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度教育培訓(xùn)檔口租賃合同
- T-ZJCX 0046-2024 簾子線直捻機(jī)
- 二零二五年度公車私用行為規(guī)范與責(zé)任追究協(xié)議
- 二零二五年度全新碼頭租賃協(xié)議及倉儲服務(wù)合作協(xié)議
- 2025年度果園租賃與農(nóng)業(yè)科技研發(fā)合同
- 二零二五年度廣告代理合同解除與權(quán)益調(diào)整協(xié)議
- 2025年度高科技企業(yè)計(jì)件工資勞動(dòng)合同
- 2025年度智能合同履約跟蹤與風(fēng)險(xiǎn)控制管理辦法
- 2025年度消防設(shè)施定期維護(hù)與消防通道清理合同
- 二零二五年度美發(fā)店員工勞動(dòng)健康保險(xiǎn)與意外傷害合同
- 醫(yī)院轉(zhuǎn)診轉(zhuǎn)院記錄單
- 余熱回收節(jié)能技術(shù)課件
- 表面工程學(xué)第四章-表面淬火和表面形變強(qiáng)化技術(shù)
- 健康管理調(diào)查表
- 汶川地震波時(shí)程記錄(臥龍3向)
- NACHI那智機(jī)器人(操作篇)課件
- 企業(yè)員工培訓(xùn)PPT課件:職務(wù)犯罪培訓(xùn)
- 場地租賃安全管理協(xié)議書
- 數(shù)學(xué)物理方程(很好的學(xué)習(xí)教材)PPT課件
- 電力建設(shè)工程質(zhì)量監(jiān)督檢查大綱新版
- GB-T-15894-2008-化學(xué)試劑-石油醚
評論
0/150
提交評論