摘要:
参考<<C++GUIProgramming withQt4>>中文版第二版中的例子:货币汇率。具体描述请看书本,主要重写继承自QAbstractTableModel的CurrencyModel,该模型底层的数据使用一个QMap<QString, double>类型的数据,其中key的QString是货币名字,value的double是这种货币对美元的汇率。 currencymodel.h文件:#ifndef CURRENCYMODEL_H#define CURRENCYMODEL_H#include <QAbstractTableModel>#i 阅读全文
摘要:
参考<<C++GUIProgramming withQt4>>中文版第二版中的例子"DirectoryViewer",简单介绍QFileSystemModel的用法,QFileSystemModel 类似QDitModel,只不过Qt不推荐使用QDirModel,推荐是使用QFileSystemModel,该模型允许我们在view中显示操作系统的目录结构。 directoryviewer.h文件:#ifndef DIRECTORYVIEWER_H#define DIRECTORYVIEWER_H#include <QtGui/QDialog&g 阅读全文
摘要:
参考<<C++GUIProgramming withQt4>>中文版第二版中的例子"ColorNamesDialog",简单介绍QSortFilterProxyModel的用法,QSortFilterProxyModel不能单独使用,它只是一个“代理”,真正的数据需要另外的一个model提供,而且它是用来排序和过滤的。 colornamesdialog.h文件:#ifndef COLORNAMESDIALOG_H#define COLORNAMESDIALOG_H#include <QtGui/QDialog>#include <Q 阅读全文
摘要:
参考<<More Effective C++>>一书中的条款26:"限制某个class所能产生的对象数量",参照"一个用来计算对象个数的基类"中的代码,简单的将里面的代码实现。一个具有对象计数功能的基类,简单来说,就是完成一个base class,作为对象计数之用,并让诸如Printer之类的class继承它。更多内容请参考<<More Effective C++>>一书中的条款26,那里有很详细的描述,这里不再讲解。下面来看看代码是如何实现的。 代码如下:#include "stdafx.h&q 阅读全文
摘要:
参考<<C++GUIProgramming withQt4>>中文版第二版中的例子"TeamLeaderDialog",简单介绍QStringListModel的用法,说白了,QStringListModel就是封装了QStringList的model。QStringList是一种很常用的数据类型,它实际上是一个字符串列表。我们用QListView作为视图。对QStringListModel的修改都会实时的反应到视图QListView中。 teamleaderdialog.h文件:#ifndef TEAMLEADERDIALOG_H#define T 阅读全文
摘要:
QTableWidget是一个显示结果类似一个表格,下面是它的简单使用。 main.cpp文件如下:#include <QtGui/QApplication>#include <QTextCodec>#include <QTableWidget>#include <QWidget>#include <QVBoxLayout>int main(int argc, char *argv[]){ QApplication a(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecFo 阅读全文
摘要:
参考<<More Effective C++>>一书中的条款25:"将constructor和non-member function虚化",简单的将里面的代码实现。 constructor虚化:即virtual constructor,是某种函数,视其获得的输入,可产生不同的类型的对象。它在许多情况下有用,其中之一就是从磁盘(或网络或磁带等)读取对象信息。这里我是直接从文件中根据读取到字符的不同构造不同的对象。 non-member function虚化:即一个虚函数做实际工作,再写一个什么都不做的非虚函数,只负责调用虚函数。这里的虚函数即是prin 阅读全文
摘要:
QTreeWidget的显示效果与MFC的TreeCtrl控件是类似的,QTreeWidget与QTReeView的本质区别是QTreeWidget面向QTreeWidgetItem,而QTReeView是面向model的。 一个简单的小例子用来阐述QTreeWidget的简单使用。#include <QtGui/QApplication>#include <QtCore/QTextCodec>#include <QTreeWidget>#include <QWidget>#include <QHBoxLayout>int main( 阅读全文
摘要:
这一节我们来介绍QListWidget的用法,QListWidget、QTreeWidget和QTableWidget都是将模型和视图结合起来,QListWidget将其显示效果与MFC的ListCtrl控件是一样一样的,下面是其简单的使用。就一个main.cpp#include <QtGui/QApplication>#include <QWidget>#include <QLabel>#include <QListWidget>#include <QHBoxLayout>#include <QIcon>int main 阅读全文
摘要:
对生产者和消费者问题的另一个解决办法是使用QWaitCondition,它允许线程在一定条件下唤醒其他线程。其中wakeOne()函数在条件满足时随机唤醒一个等待线程,而wakeAll()函数则在条件满足时唤醒所有等待线程。 下面通过一个典型用例:生产者和消费者,来实现这二者之间的同步。整个工程就一个main.cpp,文件如下:#include <QtCore/QCoreApplication>#include <QWaitCondition>#include <QThread>#include <QMutex>#include <iost 阅读全文