版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux图形编程—QTQT编程—第五章应用程序主窗口目标:本章旨在向学员介绍各种应用程序主窗口的相关内容:掌握应用程序主窗口各局部使用方法。掌握富文本处理,拖放等相关技术。学时:3学时教学方法:讲授ppt+上机操作+实例演示应用程序主窗口窗口类的继承体系QObjectQActionQActionGroupQWidgetQFrameQDockWidgetQStatusBarQWidgetActionQMainWindowQMenuBarQToolBarQSizeGripQMidSubWindowQMenuQAbstractScrollAreaQPlainTextEditQTextEditQMidAreaQTextBrowser主程序窗口框架菜单栏工具栏Dock部件状态栏中心部件一个widget就是一个窗口,Qt提供一个QMainWindow类管理主窗口程序菜单栏Desinger中编辑菜单在Desinger中向Action编辑器中拖入菜单菜单栏通过代码编辑菜单//添加编辑菜单QMenu*editMenu=ui->menuBar->addMenu(tr("编辑(&E)"));//添加翻开菜单QAction*action_Open=editMenu->addAction(QIcon(":/myImage/images/open.png"),tr("翻开文件(&O)"));//设置快捷键action_Open->setShortcut(QKeySequence("Ctrl+O"));
//在工具栏中添加动作ui->mainToolBar->addAction(action_Open);
QMenuBar:
菜单栏管理类
QMenu:
菜单窗体组件
QAction:
抽象用户界面操作
工具栏QToolBar:包含了一组控件的可移动面板//在工具栏中添加动作ui->mainToolBar->addAction(action_Open);
//向工具栏添加QToolButton按钮ui->mainToolBar->addWidget(toolBtn);//创立QSpinBoxQSpinBox*spinBox=newQSpinBox(this);//向工具栏添加QSpinBox部件ui->mainToolBar->addWidget(spinBox);
QToolBar:
菜单栏管理类
addWidget:
插入一个窗体
addAction:
选项添加到工具栏
中心部件在窗口的中心区约放置一个中心部件对于文档程序来讲一般是一个QTextEdit。//新建文本编辑器部件QTextEdit*edit=newQTextEdit(this);//使用QMdiArea类的addSubWindow()函数//创立子窗口,以文本编辑器为中心部件QMdiSubWindow*child=ui->mdiArea->addSubWindow(edit);child->setWindowTitle(tr("多文档编辑器子窗口"));//显示子窗口child->show();
addSubWindow:
创立子窗口
show:
显示子窗口
Dock部件
QDockWidget
可以停靠在中心部件的旁边
可以悬浮在主窗口上面
就像一个工具箱,放置其他部件
状态栏状态信息分为三类:临时信息,一般信息,永久信息。临时信息:showMessage一般信息:addWidget永久信息:addPermanentWidget//显示临时消息,显示2000毫秒即2秒钟ui->statusBar->showMessage(tr("欢送"),2000);//创立标签QLabel*permanent=newQLabel(this);//标签样式permanent->setFrameStyle(QFrame::Box|QFrame::Sunken);//显示信息permanent->setText(“welcom");//将标签设置为永久部件ui->statusBar->addPermanentWidget(permanent);自定义菜单菜单中是否可以添加各种部件?--使用自定义菜单创立继承QWidgetAction的类classMyAction:publicQWidgetAction实现createWidget虚函数,添加部件QWidget*createWidget(QWidget*parent)富文本处理富文本—文档中可以使用颜色,字体,表格等多种格式。QTextEdit是一个高级的所见即所得的支持使用HTML风格标记的多信息文本格式的查看器/编辑器。QTextEditQTextCursorQTextDocumentQTextFrameFormatQTextFrameQTextBlockFormatQTextBlockQTextTableFormatQTextTableQTextListFormatQTextList文本块一个文本块可以看作一个段落,回车换行可以看作一个新的文本块。遍历文本方法QTextDocument*document=ui->textEdit->document();
//获取文档的第一个文本块QTextBlockblock=document->firstBlock();for(inti=0;i<document->blockCount();i++){qDebug()<<tr("文本块%1,
文本块首行行号为:%2,长度为:%3,内容为:").arg(i).arg(block.firstLineNumber()).arg(block.length())<<block.text();//获取下一个文本块
block=block.next();表格列表图片编辑器中可以插入表格列表图片。插入列表insertTable插入表格insertList插入图片insertImage查找功能boolQTextEdit::find(const
QString
&
exp,
qtextdocument.html#FindFlag-enumoptions
=0)boolisfind=ui->textEdit->find(string,QTextDocument::FindBackward);FindFlags说明FindBackward反向查找FindCaseSensitively区分大小写FindWholeWords全文字查找语法高亮语法高亮:输入关键字时会显示不同的颜色。classMySyntaxHighlighter:publicQSyntaxHighlightervoidMySyntaxHighlighter::highlightBlock(constQString&text){QTextCharFormatmyFormat;//字符格式myFormat.setFontWeight(QFont::Bold);myFormat.setForeground(Qt::green);QRegExpexpression("\\bchar\\b");//要匹配字符串的长度intlength=expression.matchedLength();//对要匹配的字符串设置格式setFormat(index,length,myFormat}HTMLQTextEdit:支持使用HTML标签和CSS属性
//在编辑器中添加文本并且使用html标签
ui->textEdit->append(tr("<h1><fontcolor=red>使用HTML</font></h1>"));拖放翻开文件事件:拖动进入事件〔drag〕voidMainWindow::dragEnterEvent放下事件〔drop〕voidMainWindow::dropEvent事件函数接收动作:acceptProposedAction忽略该事件:ignore自定义拖放事件:鼠标按下事件MainWindow::mousePressEvent拖动进入事件voidMainWindow::dragEnterEvent拖动事件voidMainWindow::dragMoveEvent放下事件voidMainWindow::dropEvent打印文档打印机对象 QPrinter打印对话框QPrintDialog选中区域QPrintDialog::addEnabledOption按下了打印按钮QPrintDialog::Accepte打印预览创立打印预览对话框QPrintPreviewDialog需要关联相关的信号槽connect(&preview,SIGNAL(paintRequested(QPrinter*)),this,SLOT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论