随笔分类 - QT
摘要:1.坐标系简介Qt中每一个窗口都有自己的一个坐标系,默认窗口左上角为坐标原点(0,0),然后水平向右依次增大(X轴),垂直向下依次增大(Y轴)。例如:void MyDraw::paintEvent( QPaintEvent * ){QPainterpaint( this ); paint.setBrush(Qt::green ); paint.drawRect(0, 0, 100, 100 ); paint.setBrush(Qt::red ); paint.drawRect(-50, -50, 100, 100 );}上例中,先在原点(0,0)绘制了一个长、宽都是100像素的...
阅读全文
摘要:坐标变换World Corrdinates==>Window Coordinates==>Device Coordinates(逻辑坐标)世界变换中间态坐标窗口视口变换(物理坐标)在默认情况下,3个坐标系是一致的。世界变换世界变换直接相关的函数:QPainter::setWorldMatrixEnabled启用、禁用世界变换QPainter::setWorldTransform设置世界变换QPainter::worldTransform获取当前QPainter::resetTransform重置为QTransform()4个常用的函数QPainter::translate平移QPa
阅读全文
摘要:想整理一下QAxObject动态信号和槽的实现,似乎太困难了,有些无从下手,先随便写写,以后看懂了再继续注:Qt5 staging仓库已经引入一种全新的信号与槽的语法:信号可以和普通的函数、类的普通成员函数、lambda函数连接(而不再局限于信号函数和槽函数),详见信号与槽的新语法(Qt5)meta object网上关于元对象的解释已经很多了,所以我们简单提一下就可以了:1. 派生自QObject的类可以添加一个 Q_OBJECT 宏#define Q_OBJECT /public: / Q_OBJECT_CHECK / static const QMetaObject sta...
阅读全文
摘要:简介信号与槽作为 QT 的核心机制在 QT 编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念、元对象工具以及在实际使用过程中应注意的一些问题。QT 是一个跨平台的 C++ GUI 应用构架,它提供了丰富的窗口部件集,具有面向对象、易于扩展、真正的组件编程等特点,更为引人注目的是目前 Linux 上最为流行的 KDE 桌面环境就是建立在 QT 库的基础之上。QT 支持下列平台:MS/WINDOWS-95、98、NT 和 2000;UNIX/X11-Linux、Sun Solaris、HP-UX、Digital Unix、IBM AIX、SGI IRIX;EMBEDDED- 支持 frame
阅读全文
摘要:Qt – 一个跨平台应用程序和UI开发框架它包括跨平台类库、集成开发工具和跨平台 IDE。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt 主要是由诺基亚开发和维护的。Qt通过开源授权(LGPL和GPL)以及商业授权的方式对 Qt 进行授权。在Linux下Qt可是大名鼎鼎,Linux的KDE图形界面就是基于Qt开发的。Qt的最大好处是跨平台,可以看到上图,Qt可以支持windows,Mac os,linux,embedded linux, wince/mobile,symbian,诺基亚最新的Megoo那也是不在话下了,由于公司最近
阅读全文
摘要:题外话:何时使用 tr ?在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人:(1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr(2)另一类人,确实是出于国际化的需要,将需要在界面上显示的文件都用tr包起来,这有分两种: (2a) 用tr包住英文(最最推荐的用法,源码英文,然后提供英文到其他语言的翻译包)(2b) 用tr包住中文(源码用中文,然后提供中文到其他语言的翻译包)注意哦,如果你正在用tr包裹中文字符,却不属于(2b),那么,这是个信号:你在误用tr你需要的是QString,而不是tr如果你确实属于(2b),请做好心理准备,你可能还会遇到很多困难,请考
阅读全文
摘要:QT是一套很不错的界面开发库,而且考虑到了跨平台的要求,使用也相对比较容易上手。我也刚刚才学习用QT开发,发现它对中文的处理做的不是很好,或者更贴切的是做的不够智能吧,如果在字符串中输入中文,显示的就会是乱码。 下面就介绍一个简单的方法,让我们的中文正确显示出来,先看一段程序,该程序主要功能就是显示一个窗口,窗口上面的按钮显示中文。1#include<qapplication.h>2#include<qpushbutton.h>3#include<qfont.h>4#include<qvbox.h>5#include<qtextcodec.
阅读全文
摘要:信号槽机制是Qt编程的基础。通过信号槽,能够使Qt各组件在不知道对方的情形下能够相互通讯。这就将类之间的关系做了最大程度的解耦。槽函数和普通的C++成员函数没有很大的区别。它们也可以使virtual的;可以被重写;可以使public、protected或者 private的;可以由其它的C++函数调用;参数可以是任何类型的。如果要说区别,那就是,槽函数可以和一个信号相连接,当这个信号发生时,它可以被 自动调用。connect()语句的原型类似于:connect(sender, SIGNAL(signal), receiver, SLOT(slot));这里,sender和receiver都是Q
阅读全文
摘要:关于sleep函数,我们先来看一下他的作用:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指定的时间间隔后,再启动线程,继续执行代码。sleep函数并不能起到定时的作用,主要作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。sleep函数的精度非常低,当系统越繁忙的时候它精度也就越低,有时候我们休眠1秒,可能3秒后才能继续执行。它的精度取决于线程自身优先级、其他线程的优先级,以及线程的数量等因素,所以说sleep函数是不能用来精确计时的。Qt为我们提供了几个可以用于线程Sleep的函数,分别是:void QThread::sleep (
阅读全文
摘要:我们在编写Qt程序时经常会遇到这样的需求: 让程序等待一段时间, 这段时间里可能程序什么都不做, 也可能是在后台开了个子线程在做一些用户看不见的工作。首先我们容易想到的方法是使用类似linux提供的”sleep”或”usleep”函数。 但用过这组函数的Qter都知道, 这组函数会将你当前的线程/进程变为“睡眠”状态。 这个“睡眠”是深度意义的睡眠, 睡眠期间内核不会分配给程序时间片, 所以程序什么都不做, 更不用提界面的刷新了。 直接导致的问题就是用户无法与程序交互。 所以说直接使用sleep函数睡眠是常见的错误方案之一。另外一种更常见的错误方法是使用QTimer+死循环。 类似下面的代码:
阅读全文
摘要:In Qt thesupported encodingsare:Apple RomanBig5Big5-HKSCSCP949EUC-JPEUC-KRGB18030-0IBM 850IBM 866IBM 874ISO 2022-JPISO 8859-1 to 10ISO 8859-13 to 16Iscii-Bng, Dev, Gjr, Knd, Mlm, Ori, Pnj, Tlg, and TmlJIS X 0201JIS X 0208KOI8-RKOI8-UMuleLao-1ROMAN8Shift-JISTIS-620TSCIIUTF-8UTF-16UTF-16BEUTF-16LEUTF-
阅读全文
摘要:#include<qfile.h>#include<qtextstream.h>1.打开文件QFilef(fn);//fn可以是一个相对路径或绝对路径f.open(IO_);//一般不要IO_ReadWrite,很容易出现赃数据//如果要在文件的后面添加内容要IO_WriteOnly|IO_Append//如果要清空原来的内容,只要IO_WriteOnly//IO_Translate用来读windows文件,linux下的回车换行是/n,windows下是/r/n2.写文件QTextStreams(&f);s<<"Hello,world!!
阅读全文
摘要:在Qt中,打印与在QWidget,QPixmap或者QImage绘图很相似,一般步骤如下:1、创建绘图设备的QPrinter;2、弹出打印对话框,QPrintDialog,允许用户选择打印机,设置属性等;3、创建一个QPrinter的QPainter;4、用QPainter绘制一页;5、调用QPrinter::newPage(),然后绘制下一页;6、重复步骤4,5,直到打印完所有页。在Windows和Mac OS X平台,QPrinter使用系统的打印驱动程序。在Unix上,QPrinter生成脚本并把脚本发送给lp或者lpr(或者发送给程序,打印程序有函数QPrinter::setPrint
阅读全文