harbour_1的个人主页

http://www.qtcn.org/bbs/u/102816  [收藏] [复制]

harbour_1

  • 3

    关注

  • 2

    粉丝

  • 16

    访客

  • 等级:新手上路
  • 总积分:16
  • 男,1982-06-13

最后登录:2015-12-01

更多资料

日志

2012-08-29 16:17

理解Qt的线程类

Qt线程基础


Qt通过与平台无关的线程类提供了对线程的支持,通过一种线程安全方式的事件传递和在线程间通过信号和槽的方式连接达到了它的目的。这使得开发多线程的Qt应用程序和发挥多处理器的优势变得容易。在不冻结应用程序的用户界面的情况下,多线程编程也是一种有效的处理费时操作的方法。
早前的Qt版本在没有线程的支持下需要提供一个编译选项以编译出这个类库。自从Qt4.0后,提供了线程库的支持。
这个文档是提供给那些对多线程编程有丰富的知识和经验的读者的。

线程相关类库
Qt包含以下线程类库:
QThrea ..

阅读全文»分类:Qt多线程|回复:0|浏览:1619
2012-08-29 16:06

重入和线程安全
在整个手册中重入和线程安全是用来标记类和函数,说明它们如何能在多线程应用程序中使用:
一个线程安全函数可以同时从多个线程调用,即使调用使用共享数据。因为所有的数据引用到共享的序列化。一个可重入函数也可以同时从多个线程调用,但只有每个调用都使用它自己的数据,才是安全的。
因此,一个线程安全函数总是可重入的,但可重入函数并不总是线程安全的。
推而广之,某个类在多线程中,每个线程使用这个类的不同实例,且所有成员函数可以从每个线程中安全地调用,这个类被称为是可重入的类;某个类在多线程中, ..

阅读全文»分类:Qt多线程|回复:0|浏览:1847
2012-08-22 15:17

QThread中的互斥、读写锁、信号量、条件变量


在gemfield的《从pthread到QThread》一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题。关于这个问题,gemfield在《从进 程到线程》中有一个比喻,有必要重新放在下面温习下:
*******************************
最后用一个比喻来总结下:
1、一个进程就好比一个房子里有一个人;
2、clone创建线程就相当于在这个房子里添加一个人;
3、fork创建进程就相当于再造一个房子,然后在新房子里添加一个人;
有了上面的比喻后,我们就清楚很 ..

阅读全文»分类:Qt多线程|回复:0|浏览:2613
2012-08-22 15:15

Qt学习笔记--多线程

Qt提供平台无关的多线程类
使用本地线程APIs,如Win32,pthreads
线程相关的类:
QAtomicInt:平台无关的整数原子操作
QAtomicPointer:模板类,提供平台无关的指针原子操作
QMutex:多个线程串行访问
QMutexLocker:对mutexes进行加锁和解锁
QReadLocker:读锁
QWriteLocker:写锁
QReadWriteLock:读写锁
QTemaphore:通用计数semaphore
QtConcurrent:高级多线程编程APIs

通过实例化一个QThread,创建一个线程
调用start()启动线程,运行run()里面的内容

创建一个线程:定义一个QThread的子类,实现run()
class ..

阅读全文»分类:Qt多线程|回复:0|浏览:2037
2012-06-21 15:43

因个人需要,要修改Qt Widget的标题栏,网上找了大半天,没有得到答案,但发现问的人比较多

所以现将找到的此文分享一下.

(原文:http://www.qtsoftware.com/developer/faqs/faq.2007-04-25.2011048382)







How can I handle events in the titlebar and change its color etc ?

Answer:




The titlebar belongs to the OS and we don't have control over that one. You can create your own titlebar, but note that this requires some work. In order to create your own titlebar then make a QWidget subcl ..

阅读全文»分类:Qt界面|回复:0|浏览:3616
2012-06-13 10:43

今天本来想利用qt做一个装饰模式的小例子的:
QWidget()
{
protected:
...
virtual void paintEvent(QPaintEvent *);
...
};
qt自带的QWidget类不赘述
class Decorator : public QWidget
{
public:
Decorator(QWidget* parent) : m_parent(parent){}
protected:
virtual void paintEvent(QPaintEvent * e){parent->paintEvent(e); };
private:
QWidget* m_parent;
};

class ConcreteDecorator : public Decorator
{
public:
ConcreteDecorator(QWidget* parent): Decorator(parent){}
protected:
void paintEvent(QPain ..

阅读全文»分类:Qt界面|回复:0|浏览:1461
2012-06-07 13:28

Qt自定义外观--自定义标题栏的窗口
因为标题栏属于窗口管理器控制,也就受限于操作系统, 所以直接利用Qt来修改是不可行的! 通常情况下利用Qt我们可以自定义标题栏, 这里提供一个简单的例子!

例子比较简, 大致思路是正常创建窗口后, 屏蔽标题栏, 通过布局将 一个QLabel和三个按钮 构成一个“标题栏”放置在顶端(视个人喜好, 位置可以任意放置), 重新实现必要的事件。
下面分步骤进行:
1. 创建窗口, 屏蔽标题栏
例子中是创建了一个MainWindow窗口, 构造过程中传入Qt::FramelessWindowHint参数.
customTitleBar::customTitleBar ..

阅读全文»分类:Qt界面|回复:0|浏览:1673
2012-06-07 12:34

QT中 窗口部件的 背景图片 的设置

方法一:
首先设置 autoFillBackground属性为真
然后定义一个QPalette对象
设置QPalette对象的背景属性(颜色或图片)
最后设置QWidget对象的Palette
实例:
QWidget *widget = new QWidget;
widget->setAutoFillBackground(true);
QPalette palette;
//palette.setColor(QPalette::Background, QColor(192,253,123));
palette.setBrush(QPalette::Background, QBrush(QPixmap(":/images/background.png")));
widget->setPalette(palette);


方法二:
QPalette的方法
#include < ..

阅读全文»分类:Qt界面|回复:0|浏览:3623
2012-06-06 17:14

由于工作需要,要开始正经八百的学习Qt了,mark一下

阅读全文»分类:默认分类|回复:0|浏览:847

Powered by phpwind v8.7 Certificate Copyright Time now is:06-13 17:41
©2005-2016 QTCN开发网 版权所有 Gzip disabled