QT学习笔记之代码读

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)的对象、日志对象、充当打印机、显卡等设备的驱动程序的对象。

猜你喜欢

转载自blog.csdn.net/xu1129005165/article/details/82215400