上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 59 下一页
  2012年8月19日
摘要: 单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必须是单鼠标,MODEM的联接需要一条且只需要一条电话线,操作系统只能有一个窗口管理器,一台PC连一个键盘。单例模式有许多种实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但这样的代码显的很不优雅。 使用全局对象能够保证方便地访问实例,但是不能保证只声明一个对象——也就是说除了一个全局实例外,仍然能创建相同类的本地实例。《设计模式》一书中给出了一种很不错的实现,定义一个单例类, 阅读全文
posted @ 2012-08-19 12:44 一个人的天空@ 阅读(392) 评论(0) 推荐(0) 编辑
摘要: voidShapedClock::mousePressEvent(QMouseEvent *event) { if(event->button() == Qt::LeftButton) { dragPosition = event->globalPos() - frameGeometry().topLeft(); event->accept(); }}voidShapedClock::mouseMoveEvent(QMouseEvent *event) { if(event->buttons() & Qt::LeftButton) { move(event-&g 阅读全文
posted @ 2012-08-19 11:30 一个人的天空@ 阅读(2652) 评论(0) 推荐(0) 编辑
摘要: 以前我一直以为:在父widget上摆一个子widget后,当click子widget时:只会进入到子widget的相关事件处理函数中,比如进入到mousePressEvent()中, 而不会进入到父widget的对应事件处理函数中。毕竟:click的是子widget,其遮挡住了父widget,从而父widget接收不到这个事件。然而事实真的是这个样子吗? 我做了一个测试: 在一个QWidget上建了一个QLabel。而后实现父QWidget的mousePressEvent(), 然后跟一下发现:当我click这个label时:居然能进入到父QWidget的mousePressEvent()中. 阅读全文
posted @ 2012-08-19 10:35 一个人的天空@ 阅读(2496) 评论(0) 推荐(0) 编辑
摘要: 刚做完的一个项目,在测试时出现了一个问题:由于多线程的存在,当进行语音识别时:如果用户点击程序界面上的button或者其他接受点击事件后会发出信号的widget时,程序会crash ! 后来尝试着从多线程上去解决,但是比较困难;后来只能从另外一条路来解决,那就是:当语音识别进行时:禁掉一切用户操作! 所谓的禁掉一切UI操作,在手机等手持设备上,尤其是纯触摸屏的设备上,主要就是指的禁止mouse操作!当然了:也可能是禁止键盘操作等。那如何去做这一点呢? 方法:我们可以截获禁止操作的窗口的所有event事件,而后将他们全部抛掉而不进行处理,这样就可以了。那在Qt中要实现这一点有很多种方法,比较.. 阅读全文
posted @ 2012-08-19 10:32 一个人的天空@ 阅读(2583) 评论(0) 推荐(0) 编辑
摘要: 前边的文章http://blog.csdn.net/NRC_DouNingBo/archive/2010/04/28/5540427.aspx介绍了如何给QTextEdit加背景图片,但是由于图片也会跟着翻屏,所以用了一种折中的办法就是:将QTextEdit设置为透明,而后在其后边的窗口的该位置处刷上图片即可。 那这里就说一下如何让QTextEdit控件背景变为透明。 正如上一篇文章所讲的那样,在Qt中所有问题都要分两种体系来讨论,一种是QWidget体系,一种则是QGraphicsWidget体系。此处也不例外。一: 对于QWidget体系而言:亦即用的都是QWidget以及其派生类。对于此 阅读全文
posted @ 2012-08-19 10:23 一个人的天空@ 阅读(4992) 评论(0) 推荐(0) 编辑
摘要: 前一段时间遇到一个很有意思的问题,要给QTextEdit这个Qt空间加一张背景图片,我试过很多方法,用QPalette调色板,paintEvent(),结果都没有效果,后来发现有两种方式可以实现这一点,如下:(如果各位还有更好的办法,请告诉我)QTextEdit* iEdit = new QTextEdit();1:使用样式表: iEdit->setStyleSheet("background-image:url(:/bmp/DSCN1604.JPG)"); 注意:在url()括号中首先开始的 “:”冒号一定不能搞错,否则就显示不出来。2:使用html iEdit-& 阅读全文
posted @ 2012-08-19 10:20 一个人的天空@ 阅读(2836) 评论(0) 推荐(1) 编辑
摘要: 设置一个widget的背景图片/颜色,我们可以使用调色板QPalette,而设置最重要的就是setBrush()画刷。刚google搜索了一下,发现用setBrush基本都只用了它的一种方法,但实际上其有两种用法。QPalette palette; 用法一:palette.setBrush(QPalette::Base, brush);palette1.setBrush(QPalette::Active,QPalette::Base, brush);上述两种方式大同小异,除去group这一参数歪,其余两个参数一模一样,其中第二个参数代表颜色角色!其主要通过枚举变量QPalette::Color 阅读全文
posted @ 2012-08-19 10:09 一个人的天空@ 阅读(1512) 评论(0) 推荐(1) 编辑
摘要: 这两天在总结一些以往project中遇到的问题,正好别组有同事问我关于Qt中各个widget窗口的前后位置是如何定义的,这里就总结一下: 在Qt中,所有问题都要一分为二,讨论两种不同的情况:一个是最常用的QWidget体系,而另外一个则是QGraphicsWidget体系。 ①:在常用的QWidget体系中,设置前后位置是主要是用raise(),underStack(),hide()函数。 理论为:在Qt中每个widget窗口都维持着自己的一个创建栈(widget's stack.),栈里边存放的是该窗口所有子widget窗口的标识符(代表其各个子widget)。当创建一个子widge 阅读全文
posted @ 2012-08-19 10:01 一个人的天空@ 阅读(9707) 评论(0) 推荐(3) 编辑
摘要: 在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等。 但是各种方法都有其注意事项,如果不注意则很容易陷入麻烦中。1:setStyleSheet() 这个函数我一直很喜欢使用,因为只要写一句就可以实现效果,比其他方法都简单,但是其却有一个很值得注意的地方,也就是这个地方让我大吃苦头。 亦即:①:该函数只能用于设置有父窗口的子窗口的背景!如果一个窗口没有子窗口,则无法使用该函数来设置背景颜色或图 片!! ②:同时:对于一个父窗口而言:如果我们用setStyl... 阅读全文
posted @ 2012-08-19 09:48 一个人的天空@ 阅读(8102) 评论(1) 推荐(1) 编辑
摘要: Qt中使用stylesheet方式将按钮设置成圆角按钮,代码如下:setStyleSheet("border:2px groove gray;border-radius:10px;padding:2px 4px;");如pushButton如下用法:pushButton->setStyleSheet("border:2px groove gray;border-radius:10px;padding:2px 4px;");更多>setStyleSheet用法如下:qApp->setStyleSheet("QLineEdit { 阅读全文
posted @ 2012-08-19 09:45 一个人的天空@ 阅读(29165) 评论(0) 推荐(0) 编辑
摘要: // 1.正常 btnNormal_ = new QPushButton("Normal Button", this); // 2.可停驻 btnCheck_ = new QPushButton("Toggle Button", this); btnCheck_->setCheckable(TRUE); btnCheck_->setChecked(TRUE); // 3.带弹出式菜单 btnMenu_ = new QPushButton( "Popup Button", this); QMenu *menu = new Q 阅读全文
posted @ 2012-08-19 09:40 一个人的天空@ 阅读(6881) 评论(0) 推荐(0) 编辑
  2012年8月18日
摘要: setWindowFlags (Qt::CustomizeWindowHint)setWindowFlags (Qt::FramelessWindowHint)两个函数都可以去掉标题栏,区别是第一个可以鼠标缩放窗口 阅读全文
posted @ 2012-08-18 16:54 一个人的天空@ 阅读(8639) 评论(0) 推荐(1) 编辑
  2012年8月13日
摘要: 布局相关对象及简介窗体上的所有的控件必须有一个合适的尺寸和位置。Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Designer开发程序都能用到。1)布局类简介QHBoxLayout:水平布局QVBoxLayout:垂直布局QGridLayout:表格布局QGridLayout::addWidget()语法layout->addWidget(widget, row, column, rowSpan, columnSpan);参数widget 阅读全文
posted @ 2012-08-13 23:08 一个人的天空@ 阅读(36253) 评论(0) 推荐(0) 编辑
  2012年8月12日
摘要: 有时候可能需要在html网页中调用本地的对象方法。比如说我点击了一个视频文件的链接,希望调用本地的多媒体模块来播放这个视频文件, 如何实现?一、html中的JavaScript调用Qt本地对象方法过程如下:将本地的QObject对象暴露给webkit和JavaScript通过JavaScript调用本地QObject的槽下面对每个步骤进行详细的分析:1、将本地的QObject对象暴露给webkit和JavaScriptQWebFrame里提供了实现这个功能的接口:1voidaddToJavaScriptWindowObject(constQString &name, QObject * 阅读全文
posted @ 2012-08-12 16:40 一个人的天空@ 阅读(1705) 评论(0) 推荐(0) 编辑
摘要: 今天我想让一个窗体初始运行最大化,本以为很简单一个问题,花了差不多两个小时才解决,真是痛苦,问题一但解决,其实非常简单QT 中有一个voidQWidget::setWindowState(Qt::WindowStateswindowState)这样的函数,通过它可以设置窗体的初始状态,Qt::WindowStates 一共有下面几种状态:ConstantValueDescriptionQt::WindowNoState0x00000000The window has no state set (in normal state).Qt::WindowMinimized0x00000001The 阅读全文
posted @ 2012-08-12 10:22 一个人的天空@ 阅读(31891) 评论(0) 推荐(3) 编辑
上一页 1 ··· 24 25 26 27 28 29 30 31 32 ··· 59 下一页