精华内容
下载资源
问答
  • 在写 头文件的时间 经常会 有一些 class QFile 等这类 看似 是声明的东西.....QT_BEGIN_NAMESPACE class QTcpServer; class QTcpSocket; class QProgressBar; class QLabel; class QDialogBut
     
    

    在写 头文件的时间 经常会

    有一些 class QFile 等这类 看似 是声明的东西..例如下面

    #ifndef WINDOW_H
    #define WINDOW_H

    QT_BEGIN_NAMESPACE
    class QTcpServer;
    class QTcpSocket;
    class QProgressBar;
    class QLabel;
    class QDialogButtonBox;
    class QFile;
    QT_END_NAMESPACE
    //code end


    class QAction;
    class QCheckBox;
    ...

    如果没有 声明 将会 出现类似下面的错误

    ISO C++ forbids declaration of 'QFile' with no type

    那么 这个是做什么用的呢????


    是因为在头文件里面只有这些类的指针申明,并没有真正实例化,在这个头文件对应的cpp文件里面应该会
    #include <
     QDialogButtonBox >
    #include <
     QFile >
    ...
     
    在cpp文件里面才会正真实例化这些类。
    其 实直接在头文件里面#include <
     QDialogButtonBox> #include< QFile>也是可以的,像它这样做,好像是可以降低各个文件编译时的关联度,不会在改动了一下部分类的时候,引 发其他大量文件的重新编译,在做小工程的时候没什么区别,但是做大了,编译一次需要好几个小时的时候,这样做的优势就显现出来了

    展开全文
  • 关于QT_BEGIN_NAMESPACE宏的作用

    万次阅读 2017-11-07 17:01:04
    最近注意到QT_BEGIN_NAMESPACE宏,具体如下: #ifndef PREVIEWWINDOW_H #define PREVIEWWINDOW_H #include QT_BEGIN_NAMESPACE class QTextBrowser; QT_END_NAMESPACE class PreviewWindow : public QWidget { ...

            最近注意到QT_BEGIN_NAMESPACE宏,具体如下:

    #ifndef PREVIEWWINDOW_H
    #define PREVIEWWINDOW_H
    
    #include <QWidget>
    
    QT_BEGIN_NAMESPACE
    class QTextBrowser;
    QT_END_NAMESPACE
    
    class PreviewWindow : public QWidget
    {
        Q_OBJECT
    public:
        PreviewWindow(QWidget *parent = 0);
        void setTexts(QString s,bool b);
    
    protected:
        void moveEvent ( QMoveEvent * event );
    
    private:
        QTextBrowser *t;
    };
    #endif

            在其cpp文件中使用了QTextBrowser类,qtcreator的点的代码提示也没有出来(还是因为没有包括#include<QTextWidget>)


    对于QT_BEGIN_NAMESPACE宏的作用

            QT_BEGIN_NAMESPACE其实就是个宏,以前Qt4是没有命令空间的,后来才加上的,编译Qt源码时会有选项,是否将这些类放到专用的Qt命令空间内,默认是没有的。这就出来问题了,为了统一,如果你的代码在默认没有Qt命令空间的SDK中编译,那你就不用在前面加上命令空间,反之则需要。

            为了屏蔽上面这个差异,使得你的代码能在这两种情况下都进行编译,Qt就提供了QT_BEGIN_NAMESPACE宏,这样开发者就省的自己来用程序或宏进行处理了。

            至于说该宏提升编译速度什么的,那是上述类的声明的作用,与Qt无关的(也即与该宏QT_BEGIN_NAMESPACE无关),若要大幅提升编译速度需要开启qt的预编译头文件,会另起章节解说,并附测试结果


    常见的三种包含类的方式

    #ifndef PREVIEWWINDOW_H
    #define PREVIEWWINDOW_H
    
    #include <QMainWindow>
    
    #if 0
    // 方式一:
    #include <QTextBrowser>
    #endif
    
    #if 0
    // 方式二:    比方式一可轻微提升编译速度
    class QTextBrowser;
    #endif
    
    #if 1
    // 方式三:    编译速度与方式二一样,该宏用于自编译qt源码是否启动命令空间的补充
    QT_BEGIN_NAMESPACE
    class QTextBrowser;
    QT_END_NAMESPACE
    
    #endif
    
    class PreviewWindow : public QMainWindow
    {
        Q_OBJECT
    public:
        explicit PreviewWindow(QWidget *parent = 0);
    
    signals:
    
    public slots:
    
    };
    
    #endif // PREVIEWWINDOW_H
    


    
    
    
    
    
    
    
    
    
    
    
    
    展开全文
  • QT_BEGIN_NAMESPACE

    千次阅读 2020-06-30 14:19:43
    QT_BEGIN_NAMESPACE class QAction; class QMenu; class QPlainTextEdit; QT_END_NAMESPACE 在编译时就会变成这样: namespace QT_NAMESPACE { class QAction; class QMenu; class QPlainTextEdit; } QT_...
    定义以下内容:
    QT_BEGIN_NAMESPACE
    class QAction;
    class QMenu;
    class QPlainTextEdit;
    QT_END_NAMESPACE
    
    
    在编译时就会变成这样:
    namespace QT_NAMESPACE 
    {
    class QAction;
    class QMenu;
    class QPlainTextEdit;
    }
    
    
    QT_NAMESPACE是Qt自己定义的命名空间
    
    # define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
    # define QT_END_NAMESPACE }

     

    展开全文
  • Expected BEGIN_ARRAY but was BEGIN_OBJECT

    千次阅读 2015-05-07 21:17:40
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 21 path $.data 其实就是我的Bean对象建错了. 其中的data应该是一个O

    使用Gson解析的时候,遇到这个问题:
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 21 path $.data


    其实就是我的Bean对象建错了. 其中的data应该是一个Object, 结果我给写成了List.


    Json字符串是这样的:
    {
    "data": {
    "banner": [
    {
    "aid": "7",
    "catid": "0",
    "description": "asd",
    "end_time": "1432915200",
    "imgurl": "/upload/ads/2015-05-06/5549ac6f05399.jpg",
    "is_open": "1",
    "link": "http://",
    "order": "50",
    "start_time": "1430755200",
    "title": "asd"
    }
    ],
    "cat": [
    {
    "addtime": "1429063456",
    "arrchildid": "1",
    "arrparentid": "",
    "catid": "1",
    "catname": "母婴2",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "123",
    "pid": "0",
    "style": "0"
    },
    {
    "addtime": "1429063835",
    "arrchildid": "2,3,4,12,16",
    "arrparentid": "",
    "catid": "2",
    "catname": "第三方",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "0",
    "pid": "0",
    "style": "0"
    },
    {
    "addtime": "1429068195",
    "arrchildid": "6,14",
    "arrparentid": "",
    "catid": "6",
    "catname": "母婴1",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "0",
    "pid": "0",
    "style": "0"
    },
    {
    "addtime": "1429068572",
    "arrchildid": "7",
    "arrparentid": "",
    "catid": "7",
    "catname": "母婴",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "0",
    "pid": "0",
    "style": "0"
    },
    {
    "addtime": "1429068577",
    "arrchildid": "8",
    "arrparentid": "",
    "catid": "8",
    "catname": "母婴水电费",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "0",
    "pid": "0",
    "style": "0"
    },
    {
    "addtime": "1429153032",
    "arrchildid": "11,13",
    "arrparentid": "",
    "catid": "11",
    "catname": "水电费水电费",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "0",
    "pid": "0",
    "style": "0"
    },
    {
    "addtime": "1430117866",
    "arrchildid": "15",
    "arrparentid": "",
    "catid": "15",
    "catname": "SDFG",
    "child": "0",
    "image": "",
    "is_show": "1",
    "listorder": "0",
    "pid": "0",
    "style": "0"
    }
    ],
    "filter": {
    "catid": 0,
    "keywords": ""
    },
    "goods": [
    {
    "addtime": "123123123",
    "brokerage": "600.00",
    "catid": "2",
    "collection": "0",
    "content": "",
    "description": "",
    "id": "4",
    "images": "",
    "is_delete": "0",
    "is_recommend": "1",
    "is_sale": "1",
    "keywords": "",
    "listorder": "12",
    "market_price": "1500.00",
    "on_sale": "0",
    "price": "1200.00",
    "sales": "0",
    "spec_array": "",
    "status": "1",
    "store": "120",
    "title": "我是商品1",
    "userid": "2"
    }
    ]
    },
    "status": 0
    }
    使用HiJson格式化是这样的:
    图片说明

    我的MallBean.java是这样写的

     public class MallBean {
        public List<MallData> data;
        public int status;
    
        public class MallData{
            public List<MallDataBanner> banner;
            public List<MallDataCat> cat;
            public MallDataFilter filter;
            public List<MallDataGoods> goods;
        }
    
        public class MallDataBanner{
            public String aid;
            public String catid;
            public String description;
            public String end_time;
            public String imgurl;
            public String is_open;
            public String link;
            public String order;
            public String start_time;
            public String title;
        }
    
        public class MallDataCat{
            public String addtime;
            public String arrchildid;
            public String arrparentid;
            public String catid;
            public String catname;
            public String child;
            public String image;
            public String is_show;
            public String listorder;
            public String pid;
            public String style;
        }
    
        public class MallDataFilter{
            public int catid;
            public String keywords;
        }
    
        public class MallDataGoods{
            public String addtime;
            public String brokerage;
            public String catid;
            public String collection;
            public String content;
            public String description;
            public String id;
            public String images;
            public String is_delete;
            public String is_recommend;
            public String is_sale;
            public String keywords;
            public String listorder;
            public String market_price;
            public String on_sale;
            public String price;
            public String sales;
            public String status;
            public String store;
            public String title;
            public String userid;
        }
    }
    
    

    我解析是这样的(一下三种方法都是报同样的错):

                    Gson gson = new Gson();
                    MallBean mallBeanGson = gson.fromJson(response, MallBean.class);
    //              MallBean mallBeanGson = gson.fromJson(response, new TypeToken<MallBean>(){}.getType());
    //              List<MallBean> mallBeanGson = gson.fromJson(response, new TypeToken<List<MallBean>>(){}.getType());
    

    几经周折之后,发现原来是我的MallBean对象建错了,

    public class MallBean {
    public List data;
    public int status;
    ...
    }
    MallBean中的data是一个对象,而不是数组, 所以应该改为:
    public MallData data;

    以后要注意了,其实Log已经提示的很清楚了, 但自己没仔细去看Bean对象, 结果搞了好几个小时.



    展开全文
  • Expected BEGIN_ARRAY but was BEGIN_OBJECT { “msg”: “绑定成功!”, “code”: “0”, “data”: { “isbind”: “0” } } 你的解析: public class GTResult {@Expose public String msg; @E
  • class function或class 类函数 类过程

    千次阅读 2018-11-29 16:38:48
    类函数\类过程. 它们是直接操作在类上面(没有实例化的对象)  ... A class method is a method (other than a constructor) that operates on classes instead of objects. The definition of a class me...
  • Symptoms: 打了一个Patch后,但查Diagnostics: Apps Check,发现相关的Java文件...ident $JAVA_TOP/oracle/apps/inv/transaction/server/SerTrxManager.class 2.通过DB客户端执行下边语句来检查文件在数据库里的文件
  • BEGIN_MESSAGE_MAP( theClass, baseClass) Parameters theClass Specifies the name of the class whose message map this is. baseClass Specifies the name of the base class of theClass. Remarks Use th
  • 项目中使用的是rxjava + retrofit2,发生这个错误 java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 34 path 主要是 在返回结构体中声明的是 list ...
  • com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 21 path $.data Json字符串是这样的: { "data": { "banner": [ { "aid...
  • java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 问题背景: 解析mongo数据库的json { age:NumberLong(11) } class Person{ private Long age; } 无法解析成Person类 解决...
  • BEGIN_MESSAGE_MAP宏

    千次阅读 2016-01-10 21:07:02
     BEGIN_MESSAGE_MAP( theClass, baseClass )  END_MESSAGE_MAP() 对于这种看不懂的东西,瞬间感觉高大上了有木有 其实这就是一块关于消息映射的宏定义:  BEGIN_MESSAGE_MAP( theClass,
  • 在写 头文件的时间 经常会 有一些 class QFile 等这类 看似 是声明的东西..... ...QT_BEGIN_NAMESPACE class QTcpServer; class QTcpSocket; class QProgressBar; class QLabel; class QDialo
  • qt_begin_namespace

    千次阅读 2010-08-20 18:44:00
    Switch viewQT_FORWARD_DECLARE_CLASS(QTableView)QT_FORWARD_DECLARE_CLASS(QTableView)To copy to clipboard, switch view to plain text mode Expands to:Qt Code: Switch viewnamespace Foo { class ...
  • Gson报错信息如下:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $ at ...
  • 今天开发Android应用程序是用到了google的Gson这个jar包,主要是解析json...java.util.concurrent.ExecutionException: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJ...
  • com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 21 path $.data 这个问题所在,在于Object的数据类型 用 List 接收。 ...
  • QT_BEGIN_NAMESPACE 和 QT_BEGIN_NAMESPACE

    千次阅读 2013-11-06 23:30:15
     QT_BEGIN_NAMESPACE其实就是个宏,以前Qt4是没有Qt命名空间的,后来才加上的,编译Qt源码时会有选项,是否将这些类放到专用的Qt命名空间内,默认是没有的。这就出来问题了,为了统一,如果你的代码在默认没有Qt...
  • ctex中报document或documentclass错误

    千次阅读 2018-11-17 11:11:09
    问题2:ctex编译报document处错误:Missing \begin{document} 问题情景: winedt编译一个乱码后经过修改的tex文件时 针对问题1: step1 确保\documentclass前没有任何文字 step2如果经过step1检查,仍然编译出错,那...
  • LiveGetStatus liveGetStatus = gson.fromJson(doGetStr(url), LiveGetStatus.class); 出现Expected a string but was BEGIN_ARRAY错误,意思是预期是个字符串,但是是一个数组。 看一下LiveGetStatus类 由于...
  • 使用: private Fragment fragment; private FragmentManager fm;  fm = getSupportFragmentManager(); fragment = fm.findFragmentById(R.id.fragment_container);... fm.beginTransaction() ...
  • MFC中的afx_msg和BEGIN_MESSAGE_MAP

    千次阅读 2010-12-08 22:38:00
    BEGIN_MESSAGE_MAP 下面是定义:什么事件... BEGIN_MESSAGE_MAP( theClass, baseClass ) Parameters theClass Specifies the name of the class whose message map this is. baseClass Specifies 
  • BEGIN_MESSAGE_MAP和END_MESSAGE_MAP

    千次阅读 2007-10-30 21:42:00
    BEGIN_MESSAGE_MAP和END_MESSAGE_MAP首先看定义#define BEGIN_MESSAGE_MAP(theClass, baseClass) / const AFX_MSGMAP* theClass::GetMessageMap() const / { return &theClass::messageMap; }
  • 在写 头文件的时间 经常会 有一些 class QFile 等这类 看似 是声明的东西..... ...QT_BEGIN_NAMESPACE class QTcpServer; class QTcpSocket; class QProgressBar; class QLabel; class QDialo
  • Qt中QT_BEGIN_NAMESPACE和QT_END_NAMESPACE

    千次阅读 2014-11-28 13:40:59
    先来看一段程序: #ifndef WINDOW_H #define WINDOW_H ...QT_BEGIN_NAMESPACE//// class QAbstractItemModel; class QCheckBox; class QComboBox; class QDateEdit; class QGroupBox; class QLabel; class QLineEd

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 511,673
精华内容 204,669
关键字:

beginclass