qt_编程经验总结.docx_第1页
qt_编程经验总结.docx_第2页
qt_编程经验总结.docx_第3页
qt_编程经验总结.docx_第4页
qt_编程经验总结.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何添加自定义的slot 函数。以添加recordOnRadioButtonClickedHandle函数为例。1 头文件里定义recordOnRadioButtonClickedHandle函数,并在.cpp 文件里实现函数主体内容。setuppage.hpublic slots:void recordOnRadioButtonClickedHandle();setuppage.cppvoid SetupPage:recordOnRadioButtonClickedHandle()printf(recordOnRadioButtonClickedHandle handle!n);return; 2 与信号连接。connect(recordOnRadioButton,SIGNAL(clicked(),this,SLOT(recordOnRadioButtonClickedHandle();3 对文件里添加Q_OBJECT4 重新生成makefile Qt标准对话框之QMessageBox 这次来说一下QMessageBox以及类似的几种对话框。其实,我们已经用过QMessageBox了, 就在之前的几个程序中。不过,当时是大略的说了一下,现在专门来说说这几种对话框。 好久没有更新博客,主 要是公司里面还在验收一些东西,所以没有及时更新。而且也在写一个基于Qt的画图程序,基本上类似于PS的东西,主要用到的是Qt Graphics View Framework。好了,现在还是继续来说说Qt的标准对话框吧!这次来说一下QMessageBox以及类似的几种对话框。其实,我们已经用过QMessageBox了,就在之前的几个程序中。不过,当时是 大略的说了一下,现在专门来说说这几种对话框。先来看一下最熟悉的QMessageBox:information。我们在以前的代码中这样使用过:QMessageBox:information(NULL,Title,Content,QMessageBox:Yes|QMessageBox:No,QMessageBox:Yes);下面是一个简单的例子:现在我们- staticStandardButtonQMessageBox:information(QWidget*parent,constQString&title,constQString&text,StandardButtonsbuttons=Ok,StandardButtondefaultButton=NoButton);首先,它是static的,所以我们能够使用类名直接访问到(怎么看都像废话);然后看它那一堆参数,第一个参数parent,说明它的父组 件;第二个参数title,也就是对话框的标题;第三个参数text,是对话框显示的内容;第四个参数buttons,声明对话框放置的按钮,默认是只放 置一个OK按钮,这个参数可以使用或运算,例如我们希望有一个Yes和一个No的按钮,可以使用QMessageBox:Yes | QMessageBox:No,所有的按钮类型可以在QMessageBox声明的StandarButton枚举中找到;第五个参数 defaultButton就是默认选中的按钮,默认值是NoButton,也就是哪个按钮都不选中。这么多参数,豆子也是记不住的啊!所以,我们在用 QtCreator写的时候,可以在输入QMessageBox:information之后输入(,稍等一下,QtCreator就会帮我们把函数签 名显示在右上方了,还是挺方便的一个功能!Qt提供了五个类似的接口,用于显示类似的窗口。具体代码这里就不做介绍,只是来看一下样子吧! QMessageBox:critical(NULL,critical,Content,QMessageBox:Yes|QMessageBox:No,QMessageBox:Yes); QMessageBox:warning(NULL,warning,Content,QMessageBox:Yes|QMessageBox:No,QMessageBox:Yes); QMessageBox:question(NULL,question,Content,QMessageBox:Yes|QMessageBox:No,QMessageBox:Yes); QMessageBox:about(NULL,About,Aboutthisapplication);请注意,最后一个about()函数是没有后两个关于button设置的按钮的!QMessageBox对话框的文本信息时可以支持HTML标签的。例如: QMessageBox:about(NULL,About,Aboutthisapplication);运行效果如下:如果我们想自定义图片的话,也是很简单的。这时候就不能使用这几个static的函数了,而是要我们自己定义一个QMessagebox来使 用: QMessageBoxmessage(QMessageBox:NoIcon,Title,Contentwithicon.); message.setIconPixmap(QPixmap(icon.png); message.show();需要注意的是,同其他的程序类似,我们在程序中定义的相对路径都是要相对于运行时的.exe文件的地址的。比如我们写icon.png,意 思是是在.exe的当前目录下寻找一个icon.png的文件。这个程序的运行效果如下:还有一点要注意,我们使用的是png格式的图片。因为Qt内置的处理图片格式是png,所以这不会引起很大的麻烦,如果你要使用jpeg格式的 图片的话,Qt是以插件的形式支持的。在开发时没有什么问题,不过如果要部署的话,需要注意这一点。最后再来说一下怎么处理对话框的交互。我们使用QMessageBox类的时候有两种方式,一是使用static函数,另外是使用构造函数。首先来说一下static函数的方式。注意,static函数都是要返回一个StandardButton,我们就可以通过判断这个返回值来对 用户的操作做出相应。QMessageBox:StandardButtonrb=QMessageBox:question(NULL,ShowQt,DoyouwanttoshowQtdialog?,QMessageBox:Yes|QMessageBox:No,QMessageBox:Yes); if(rb=QMessageBox:Yes) QMessageBox:aboutQt(NULL,AboutQt); 如果要使用构造函数的方式,那么我们就要自己运行判断一下啦: QMessageBoxmessage(QMessageBox:NoIcon,ShowQt,DoyouwanttoshowQtdialog?,QMessageBox:Yes|QMessageBox:No,NULL); if(message.exec()=QMessageBox:Yes) QMessageBox:aboutQt(NULL,AboutQt); 其实道理上也是差不多的。Qt 中如何使用外部链接库在.pro 文件使用情况如下所示。LIBS=./cores/libcores.a如何将qte 默认的绿色背景设置为透明Qte 启动时会将背色设置为绿色背色, 这个颜色实在是太恶心了, 现需要OSD层与视频层叠加显示,需要设置背色绿色为透明。我的实现方法如下1 设置framerbuffer,定义TRANSPARENT_COLOR颜色不显示。 stColorKey.bKeyEnable = HI_TRUE; stColorKey.u32Key = TRANSPARENT_COLOR; stColorKey.bMaskEnable = HI_FALSE; stColorKey.u8BlueMask = 255; stColorKey.u8RedMask = 255; stColorKey.u8GreenMask = 255; if (ioctl(m_Fb.FrameBufferFd, FBIOPUT_COLORKEY_HIFB, &stColorKey) 0) return -OEC_HARDWAREERROR; 注:TRANSPARENT_COLOR 颜色的RGB值分别为255,0,02 设置QT的背景色为TRANSPARENT_COLOR QBrush *BackColor = new QBrush(QColor(255,0,0); /设置背景颜色QWSServer:setBackground(*BackColor); /应用背景颜色布局的时候设置左,上,右,下的距离我用红字圈不来的那哥们的回答确实很有用。还有vlolv那哥们的回答很准确的解释了我的疑问。也是,你既然要设定坐标为什么还让QT去layout,明摆了没事找事么。jwvwv的两个方法我只试了setContentsMargins,发现其实很管用,查看文档,void QWidget:setContentsMargins ( intleft, inttop, intright, intbottom)Sets the margins around the contents of the widget to have the sizesleft,top,right, andbottom. The margins are used by the layout system, and may be used by subclasses to specify the area to draw in (e.g. excluding the frame).Changing the margins will trigger aresizeEvent().噢,原来就是布局的时候设置实际的距离左,上,右,下的距离,这样其实就基本实现了我的要求。我设置坐标其实不是死的,只是想让他距离上边框有一定的距离。如何加载图片有两种方法,一种是加载直接路径1 加载图片的直接路径,例如图片在当前文件夹下的image目录下。image.load(./images/mainwindow_background.png);2 加载图片的相对路径image.load(:./images/mainwindow_background.png);当以此种形式加载图片时,图片的路径也是要在qrc文件里进行定义的。images/mainwindow_background.png这样意义统一更改图片的路径, 当切换主题的时候只用切换qrc文件便可。在Qt4中如何为对话框设置背景?答:这个问题值得总结一下。大致有以下的思路和方法:1.重写paintEvent()事件在该事件中用画笔QPainter重画整个背景。该方法比较复杂,不建议初学者采用。2.使用调色板类QPalette /以下代码中pWidget为指向要设置的widget的指针。 QPalette palette = pWidget-palette(); palette-setBrush(QPalette:Active,QPalette:Window,QBrush(Qt:red); pWidget-setPalette(palette);pWidget-setAutoBackground(true); 推荐使用这种方法,大家可以查看一下setBrush()方法的定义: Palette:setBrush ( ColorGroup group, ColorRole role, const QBrush & brush )这个是一个重载版本,最为重要的是第二个参数,可以设置许多不同的类型。举例来说, 如果pWidget指向的是一个QListWidget或者QTextEdit对象,如果把第二个参数设置成QPalette:Text,则是设置其中文字的颜色;如果第二个参数是QPalette:BrightText,则是设置该对象被选中时,其文字的颜色;如果第二个参数QPalette:Bright则表示设置选中该对象时,高亮背景的颜色或者图片。该函数的功能是很强大的。3.使用样式表。 pWidget-setStyleSheet(background-color:blue;); /设置背景颜色 pWidget-setStyleSheet(background-image:url(:/folder/show.bmp);); /设置背景图片此外,还有一些很有意思的方法,比如用setHtml(),ins

温馨提示

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

评论

0/150

提交评论