Qt04使用Qt设计师创建主窗口应用

上传人:小** 文档编号:101520486 上传时间:2022-06-05 格式:DOC 页数:10 大小:647KB
收藏 版权申诉 举报 下载
Qt04使用Qt设计师创建主窗口应用_第1页
第1页 / 共10页
Qt04使用Qt设计师创建主窗口应用_第2页
第2页 / 共10页
Qt04使用Qt设计师创建主窗口应用_第3页
第3页 / 共10页
资源描述:

《Qt04使用Qt设计师创建主窗口应用》由会员分享,可在线阅读,更多相关《Qt04使用Qt设计师创建主窗口应用(10页珍藏版)》请在装配图网上搜索。

1、实验4使用Qt设计师创建主窗口应用4.1.创建主窗体使用Qt设计师来创建主窗口应用是非常方便的,其步骤与使用代码创建基本一样。1. 选择模板首先,创建一个窗体,选择“MainWindow”模板,创建一个空的主窗体,如下图:2. 创建资源在资源浏览器中,点击编辑资源,如下图所示资源測宠器t5xFil-ter点编辑资源信号/糟扁辑器动作编辑器贵源浏览器我们将要在程序中使用图标资源,因此在资源编辑对话框中,点击新建资源,首先创建资源文件,我们就创建一个名为resource.qrc的资源文件,然后在编辑区中,再添加前缀,我们以“”作为资源的前缀,图标文件我们都放在images目录下,然后添加图标文件将

2、该目录下的所有文件添加即可,如下图所示:恥右琏单击,添加前缰护images/copy.png讯呼灿卯ng札冷击,韧文件irnages/new.pngimages/openpngimages/paste.pngsimages/sav&.pngJOS取消完成之后,我们可以在资源浏览器中看到添加的各个图标资源,如下图所示:3. 创建动作在动作编辑器中,点击新建动作,进行动作的创建,在此过程中,可以设置动作的文本(显示在菜单项上的文本),对象名称,工具提示(鼠标放在动作上时显示的提示信息),图标(也就是浏览资源管理器中的资源,选择适当的图标资源),快捷键(鼠标点击快捷键区域,然后按下希望设置的快捷键即

3、可),如下图所示:我们创建了一个newAction动作,对应“文件”菜单下的“新建”菜单项。侖新建动作确定I取消通过同样的方式,我们将程序中用到的所有动作创建完成,如下图:4.将动作添加到工具栏和菜单上首先创建工具栏,在主窗口中右键单击即可在弹出菜单中选择“添加工具栏”来添加,如下图要将动作添加到菜单和工具栏上,还需要创建菜单,这通过在主窗口中的“在这里输入”之处输入菜单的文本,并修改菜单的objectName即可,有了菜单和工具栏,就可以将动作添加到菜单和工具栏上了,这很简单,只要从动作编辑器中拖动动作放到相应的菜单和工具栏上即可,摆放动作的时候,可以根据需要插入分隔符,最终的结果如下图所示

4、(注,菜单上的动作没有显示出来,但在对象查看器中可以看到已经添加到菜单上了):E1長霓篦一G主倉匚程序-mainwindow.ui3如勰尋关于在逹里瑜入MainWinda务匸enikflhvidgetplainTextEdit*menubarJfflWMenuinewActionopenAcliio-nMvrAdionsavrAsActian分翻cxiEAcEioniJeditMenuJtActicnpasleActioncopyActionJeboutMermabouEAdtionabouLQAdio-n血tuwbd3*toolBarQMainWindawIQWidgetQPlainlewi

5、EditQMenuBarQMenuQArtianit;.5QAclio-riQAdicmQActionQActionQAdianQMenu灵QAction削QAcEiani_lQAdianQMenuQActionQActionQStotusBoirQTbolBarnewAizticiriQAdia-nopnActionVQArfcmsaveAiSioniL1QActionQActioncuiAcfcon表QArfianpe5tE-Acticn.QArfan2pyActionJQAfiio-n5.新建自定义槽函数为了配置信号和槽函数之间的连接,我们需要在Qt设计师中创建一些自定义的槽函数(当然也

6、还需要在代码中声明和定义),点击Qt设计师工具栏上的“编辑信号/槽”工具按钮,切换到编辑信号/槽状态。点击鼠标左键并按住将鼠标从文本编辑区(或菜单栏火工具栏页可)拖动到主窗口标题区(并非是为了连接这两个部件的信号/槽,而是为了弹出编辑信号/槽对话框来,以便在MainWindow中添加槽函数,所以必须拖动到主窗口的有效区域),如下图所示:然后添加几个槽函数,编辑完成之后,确认返回“编辑连接”(上图)的界面,现在不需要进行连接我们只是借用此界面创建槽函数而已,创建的槽函数时的界面如下图所示:newFileQopenQsaveQsaveAsQaboutOdocunriientWasModifiedQ

7、1*在这个粪中g逵加这几个槽函数raisefllowerQsetAnimalied(bool)setDockNestingEnabledbool)|阿新门Window阳信号傕6.连接信号和槽函数主窗口应用中的信号多是由菜单项点击或者工具栏按钮的点击产生的,这就需要连接动作(Action)的信号和有关的槽函数。这个操作可以在“信号/槽编辑器”中完成,点击编辑器左上角的“+”号,添加一个连接,然后分别在连接中选择相关的动作和与其相应的槽函数即可,在点击“+”号即可创建下一个连接。最后的连接如下图,另外,AboutQt这个菜单项的动作的信号还没有连接到任何槽函数,我们将连接它的triggered()

8、信号到qApp的槽aboutQt()上,qApp是一个QApplication的全局指针对象,而它的槽函数aboutQt()也是已经提供的,用来显示有关Qt的版本等信息,但遗憾的是,在信号/槽编辑器的“接收者”处没有找到qApp对象,因此该连接只能手工的方式在代码中进行了。将主窗口的objectName修改为MainWindow,最后将主窗口保存为文件mainwindow.ui,关闭Qt设计师,下一步,编写代码完成程序。4.2.编写代码完成程序我们可以直接使用Qt设计师完成的主窗口类,但为了在类中增加我们自己的自定义槽函数,又不至于手动在Qt设计师创建的类中添加代码,我们采取的办法跟创建对话框

9、应用一样,使用继承的方式并进行类的扩展。创建文件mainwindow.h,内容如下:#ifndefMAINWINDOW_H#defineMAINWINDOW_H/#includeQMainWindow#includeui_mainwindow.h/classMainWindow:publicQMainWindow,publicUi:MainWindowQ_OBJECTpublic:MainWindow(QWidget*parent=0,Qt:WFlagsf=0);protected:voidcloseEvent(QCloseEvent*event);privateslots:voidnewFi

10、le();voidopen();boolsave();boolsaveAs();voidabout();voiddocumentWasModified();private:voidreadSettings();voidwriteSettings();boolmaybeSave();voidloadFile(constQString&fileName);boolsaveFile(constQString&fileName);voidsetCurrentFile(constQString&fileName);QStringstrippedName(constQString&fullFileName

11、);QStringcurFile;#endif创建文件mainwindow.cpp,内容如下:#include#includemainwindow.h/MainWindow:MainWindow(QWidget*parent,Qt:WFlagsf):QMainWindow(parent,f)setupUi(this);setCentralWidget(plainTextEdit);readSettings();connect(plainTextEdit-document(),SIGNAL(contentsChanged(),this,SLOT(documentWasModified();con

12、nect(about_QtAction,SIGNAL(triggered。),qApp,SLOT(aboutQt();statusBar()-showMessage(tr(Ready);setCurrentFile();setUnifiedTitleAndToolBarOnMac(true);/voidMainWindow:closeEvent(QCloseEvent*event)if(maybeSave()writeSettings();event-accept();elseevent-ignore();voidMainWindow:newFile()if(maybeSave()plainT

13、extEdit-clear();setCurrentFile();voidMainWindow:open()if(maybeSave()QStringfileName=QFileDialog:getOpenFileName(this);if(!fileName.isEmpty()loadFile(fileName);boolMainWindow:save()if(curFile.isEmpty()returnsaveAs();elsereturnsaveFile(curFile);boolMainWindow:saveAs()QStringfileName=QFileDialog:getSav

14、eFileName(this);if(fileName.isEmpty()returnfalse;returnsaveFile(fileName);voidMainWindow:about()QMessageBox:about(this,tr(AboutApplication),tr(TheApplication/bexampledemonstrateshowtowritemodernGUIapplicationsusingQt,withamenubar,toolbars,andastatusbar.);voidMainWindow:documentWasModified()setWindow

15、Modified(plainTextEdit-document()-isModified();voidMainWindow:readSettings()QSettingssettings(Trolltech,ApplicationExample);QPointpos=settings.value(pos,QPoint(200,200).toPoint();QSizesize=settings.value(size,QSize(400,400).toSize();resize(size);move(pos);voidMainWindow:writeSettings()QSettingssetti

16、ngs(Trolltech,ApplicationExample);settings.setValue(pos,pos();settings.setValue(size,size();boolMainWindow:maybeSave()if(plainTextEdit-document()-isModified()QMessageBox:StandardButtonret;ret=QMessageBox:warning(this,tr(Application),tr(Thedocumenthasbeenmodified.nDoyouwanttosaveyourchanges?),QMessag

17、eBox:Save|QMessageBox:Discard|QMessageBox:Cancel);if(ret=QMessageBox:Save)returnsave();elseif(ret=QMessageBox:Cancel)returnfalse;returntrue;voidMainWindow:loadFile(constQString&fileName)QFilefile(fileName);if(!file.open(QFile:ReadOnly|QFile:Text)QMessageBox:warning(this,tr(Application),tr(Cannotread

18、file%1:n%2.).arg(fileName).arg(file.errorString();return;QTextStreamin(&file);#ifndefQT_NO_CURSORQApplication:setOverrideCursor(Qt:WaitCursor);#endifplainTextEdit-setPlainText(in.readAll();#ifndefQT_NO_CURSORQApplication:restoreOverrideCursor();#endifsetCurrentFile(fileName);statusBar()-showMessage(

19、tr(Fileloaded),2000);boolMainWindow:saveFile(constQString&fileName)QFilefile(fileName);if(!file.open(QFile:WriteOnly|QFile:Text)QMessageBox:warning(this,tr(Application),tr(Cannotwritefile%1:n%2.).arg(fileName).arg(file.errorString();returnfalse;QTextStreamout(&file);#ifndefQT_NO_CURSORQApplication:s

20、etOverrideCursor(Qt:WaitCursor);#endifoutplainTextEdit-toPlainText();#ifndefQT_NO_CURSORQApplication:restoreOverrideCursor();#endifsetCurrentFile(fileName);statusBar()-showMessage(tr(Filesaved),2000);returntrue;voidMainWindow:setCurrentFile(constQString&fileName)curFile=fileName;plainTextEdit-docume

21、nt()-setModified(false);setWindowModified(false);QStringshownName=curFile;if(curFile.isEmpty()shownName=untitled.txt;setWindowFilePath(shownName);QStringMainWindow:strippedName(constQString&fullFileName)returnQFileInfo(fullFileName).fileName();创建主函数文件main.cpp,内容如下:#includeQApplication#includemainwin

22、dow.hintmain(intargc,char*argv)QApplicationapp(argc,argv);app.setOrganizationName(Trolltech);app.setApplicationName(ApplicationExample);MainWindowmainWin;mainWin.show();returnapp.exec();代码跟5.2的一致,只是不再手工创建菜单,动作,工具栏等,因此无需过多解释。4.3实验要求:,而应用名ApplicationName修请完成该应用,并将程序中的组织名OrganizationName改为“成都理工”改为个人的名字,如“张三”,并将窗口的标题修改为“名字学号”。将该应用编写完成并运行通过,将整个目录上传至服务器的个人文件夹中。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!