1 Q_UNUSED ( name ) 的用法
一、用法
Q_UNUSED() 没有实质性的作用,用来避免编译器警告
for example:
int transition::getSTL(int type)
{
Q_UNUSED(type);
return 123;
}
二、相关问题处理:
如果编译中出现以下警告:
warning: unused parameter ‘arg1′ [-Wunused-parameter]
原因是由于函数参数未使用,这在程序当中有时候很正常;所以个人认为此警告意义不大,可以取消;
方法一:
在提示警告函数里面添加
Q_UNUSED(arg1);
方法二:
在pro工程文件最后加入如下代码:
QMAKE_CXXFLAGS += -Wno-unused-parameter
2 Qt中moc问题(qt moc 处理 cpp)
#inlcude "XXXX.moc"
首先,一般只有用到信号signals和槽slots时才会用到moc,因为采用信号signals和槽slots是QT的特性,而C++没有,所以采用了moc(元对象编译器)把信号signals和槽slots部分编译成C++语言.
用信号signals和槽slots需注意的基本问题是:
1)在类class声明中必须加入Q_OBJECT;
2)在CPP文件中要把信号signals和槽slots联系起来,即使用connect,例connect( iv, SIGNAL(clicked (QIconViewItem *)), this, SLOT( draw()));
3.SetRoot
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSplitter *splitter = new QSplitter;
QDirModel *model = new QDirModel;
//从缺省目录创建数据
QTreeView *tree = new QTreeView(splitter);
tree->setModel(model);
tree->setRootIndex(model->index(QDir::currentPath()));
QListView *list = new QListView(splitter);
list->setModel(model);
list->setRootIndex(model->index(QDir::currentPath()));
//配置一个view去显示model中的数据,只需要简单地调用setModel(),并把目录model作为参数传递
//setRootIndex()告诉views显示哪个目录的信息,这需要提供一个model index,然后用这个
//model index去model中去获取数据
//index()这个函数是QDirModel特有的,通过把一个目录做为参数,得到了需要的model index
//其他的代码只是窗口show出来,进入程序的事件循环就好了
splitter->setWindowTitle("Two views onto the same directory model");
splitter->show();
return app.exec();
}
上述代码展示了使用model的最简单的方式,先装配出一个QDirModel以供使用,再创建views去显示目录的内容。
4 instance()——qt设计模式之单例模式
定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
class CSingleton
{
private:
CSingleton() //构造函数是私有的
{
}
public:
static CSingleton * GetInstance()
{
static CSingleton *m_pInstance;
if(m_pInstance == NULL) //判断是否第一次调用
m_pInstance = new CSingleton();
return m_pInstance;
}
};
显而易见,构造函数私有化,提供一个public 可以获取这个实例,也是唯一一个实例。
注意点:
1. 单例模式和它的名字一样,只有一个实例,独一无二。
2. 它是自行创建自己的实例,而不是 在其他类中new出来的。
3. 它提供public接口,供其他对象使用。
常用的方向:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表(registry)的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。