范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Qt布局管理器

  QT中提供了对界面组件进行布局管理的类,用于对界面组件进行管理, 能够自动排列窗口中的界面组件 窗口大小变化后,便会自动更新界面组件的大小。 布局管理器可以自定义,从而达到更加个性化界面布局的效果 布局管理器可以相互嵌套,完成所有常用的界面布局 QLayout是Qt中布局管理器的抽象基类,如下图所示:
  回到顶部 1. 实例参考
  1 #include "testlayout.h"  2  #include   4 #include   5 #include   6 #include   7 #include   8 #include   9  int main(int argc, char *argv[]) 11 { 12     QApplication a(argc, argv); 13     TestLayout w; 14  15     //设置标签,并且设置快捷键 16     QLabel *nameLabel = new QLabel("姓名:(&N)"); 17     QLabel *ageLabel = new QLabel("年龄:(&A)"); 18     QLabel *emailLabel = new QLabel("邮箱:(&E)"); 19     QLabel *numLabel = new QLabel("门牌号码:"); 20  21     //创建三个输入框 22     QLineEdit *nameLineEdit = new QLineEdit; 23     QLineEdit *ageLineEdit = new QLineEdit; 24     QLineEdit *emailLineEdit = new QLineEdit; 25     QLineEdit *numLineEdit = new QLineEdit; 26  27     //设置标签与输入框的伙伴关系 28     nameLabel->setBuddy(nameLineEdit); 29     ageLabel->setBuddy(ageLineEdit); 30     emailLabel->setBuddy(emailLineEdit); 31     numLabel->setBuddy(numLineEdit); 32  33     //表单布局 34     QFormLayout *headerLayout = new QFormLayout; 35     headerLayout->addRow(nameLabel,nameLineEdit); 36     headerLayout->addRow(ageLabel,ageLineEdit); 37     headerLayout->addRow(emailLabel,emailLineEdit); 38     headerLayout->addRow(numLabel,numLineEdit); 39  40     //单选按钮 41     QLabel *sexLabel = new QLabel("性别:"); 42     QRadioButton *mBtn = new QRadioButton; 43     QRadioButton *wBtn = new QRadioButton; 44     mBtn->setText("男"); 45     wBtn->setText("女"); 46  47     //水平布局 QHBoxLayout, H:horizontal 水平 48     QHBoxLayout *sexLayout = new QHBoxLayout; 49     sexLayout->addWidget(sexLabel); 50     sexLayout->addWidget(mBtn); 51     sexLayout->addWidget(wBtn); 52  53     /* 54      * QSpacerItem 为添加空隙的函数,他的四个参数为:空隙区域的宽,空隙区域的高, 高的尺寸策略最小到无限大, 水平方向的的尺寸策略最小到无限大 55      * QSpacerItem(int w, int h, QSizePolicy::Policy hPolicy = QSizePolicy::Minimum, QSizePolicy::Policy vPolicy = QSizePolicy::Minimum)*/ 56     QSpacerItem *spacer = new QSpacerItem(20,10); 57     QSpacerItem *spacerL = new QSpacerItem(50,50); 58     QSpacerItem *spacerR = new QSpacerItem(50,50); 59  60     //添加按钮 61     QPushButton *okBtn = new QPushButton("确定"); 62  63     //为了让确认按钮窄点,将两个空隙放到确认按钮两旁 64     QHBoxLayout *QHLayoutOK = new QHBoxLayout; 65     QHLayoutOK->addItem(spacerL); 66     QHLayoutOK->addWidget(okBtn); 67     QHLayoutOK->addItem(spacerR); 68  69     //垂直布局 QVBoxLayout,V:vertical 垂直 70     QVBoxLayout *mainLayout = new QVBoxLayout; 71     mainLayout->addLayout(headerLayout);        //addLayout 添加布局 72     mainLayout->addLayout(sexLayout); 73     mainLayout->addItem(spacer);                  //addItem 添加空隙 74     //mainLayout->addWidget(okBtn);               //addWidget 添加部件 75     mainLayout->addLayout(QHLayoutOK); 76  77     //设置部件与窗体之间的空隙 78     mainLayout->setMargin(25); 79  80     //设置控件之间的间隙 81     mainLayout->setSpacing(10); 82  83     //调用加载窗口的布局 84     w.setLayout(mainLayout); 85     w.show(); 86     return a.exec(); 87 }
  回到顶部
  点击领取Qt学习资料+视频教程~「链接」
  2.QBoxLayout 水平/垂直布局
  QBoxLayout有两个子类: QHBoxLayout (水平)和 QVBoxLayout (垂直)
  比如垂直布局,表示将垂直方向分为一个个格子,如下图所示:
  2.1QVBoxLayout使用(垂直)int main(int argc, char *argv[]) {      QApplication a(argc, argv);     QWidget w;      QVBoxLayout *layout=new QVBoxLayout;        QPushButton btn1("test1",&w);     QPushButton btn2("test2",&w);     QPushButton btn3("test3",&w);      btn1.setMaximumSize(600,360);     btn1.setMinimumSize(100,60);     btn2.setMaximumSize(600,360);     btn2.setMinimumSize(100,60);     btn3.setMaximumSize(600,360);     btn3.setMinimumSize(100,60);         layout->addWidget(&btn1);       //向布局管理器添加组件,实现自动布局      layout->addWidget(&btn2);      layout->addWidget(&btn3);       w.setLayout(layout);           //为部件设置布局管理器       layout->setSpacing(10);       w.show();      return a.exec(); }2.2QHBoxLayout使用(水平)int main(int argc, char *argv[]) {      QApplication a(argc, argv);    QWidget w;      QHBoxLayout *layout=new QHBoxLayout;      QPushButton btn1("test1",&w);     QPushButton btn2("test2",&w);     QPushButton btn3("test3",&w);      btn1.setMaximumSize(600,360);     btn1.setMinimumSize(100,60);     btn2.setMaximumSize(600,360);     btn2.setMinimumSize(100,60);     btn3.setMaximumSize(600,360);     btn3.setMinimumSize(100,60);       layout->addWidget(&btn1);       //向布局管理器添加组件,实现自动布局      layout->addWidget(&btn2);      layout->addWidget(&btn3);      w.setLayout(layout);           //为部件设置布局管理器       layout->setSpacing(10);       w.show();      return a.exec(); }2.3QBoxLayout相互嵌套
  1.1与1.2写了 QHBoxLayout (水平)和 QVBoxLayout (垂直),但是只是单方面自动布局.
  接下来, 来使用 嵌套 ,来实现 水平+垂直 自动布局,如下图所示:
  int main(int argc, char *argv[]) {     QApplication a(argc, argv);      QHBoxLayout *Hlayout1=new QHBoxLayout;     QHBoxLayout *Hlayout2=new QHBoxLayout;     QVBoxLayout *Vlayout=new QVBoxLayout;      QWidget w;      QPushButton btn1("test1",&w);     QPushButton btn2("test2",&w);     QPushButton btn3("test3",&w);     QPushButton btn4("test4",&w);     btn1.setMaximumSize(600,360);     btn1.setMinimumSize(100,60);     btn2.setMaximumSize(600,360);     btn2.setMinimumSize(100,60);     btn3.setMaximumSize(600,360);     btn3.setMinimumSize(100,60);     btn4.setMaximumSize(600,360);     btn4.setMinimumSize(100,60);      Hlayout1->addWidget(&btn1);       //水平布局: btn1  btn2     Hlayout1->addWidget(&btn2);     Hlayout1->setSpacing(10);      Hlayout2->addWidget(&btn3);      //水平布局: btn3  btn4     Hlayout2->addWidget(&btn4);     Hlayout2->setSpacing(10);      Vlayout->addLayout(Hlayout1);     //垂直布局: Hlayout1 Hlayout2     Vlayout->addLayout(Hlayout2);     Vlayout->setSpacing(10);      w.setLayout(Vlayout);           //设置布局管理器,由于Vlayout管理着Hlayout1 Hlayout2,所以只填写一个即可      w.show();      return a.exec(); }
  布局管理器比例系数
  默认情况下,组件之间以等比例的方式改变组件大小.
  其实用户也可以 自定义 组件之间比例系数,当窗口放大时,便来更新比例系数.
  常用函数: QBoxLayout::setStretch ( int index, int stretch );     //设置具体组件的拉伸系数 // index:表示布局管理器里的第几个组件 // stretch :拉伸系数  bool  QBoxLayout::setStretchFactor ( QWidget * widget, int stretch );                   //设置部件拉伸系数,如果存在*widget这个组件,则设置成功,返回true bool QBoxLayout::setStretchFactor ( QLayout * layout, int stretch );                   //设置布局拉伸系数, ,如果存在*layout这个组件,则设置成功,返回true
  示例代码如下: int main(int argc, char *argv[]) {     QApplication a(argc, argv);     QHBoxLayout *Hlayout1=new QHBoxLayout;     QHBoxLayout *Hlayout2=new QHBoxLayout;     QVBoxLayout *Vlayout=new QVBoxLayout;     QWidget w;     QPushButton btn1("test1",&w);     QPushButton btn2("test2",&w);     QPushButton btn3("test3",&w);     QPushButton btn4("test4",&w);          btn1.setMinimumSize(100,60);      btn2.setMinimumSize(100,60);      btn3.setMinimumSize(100,60);      btn4.setMinimumSize(100,60);      //设置大小策略,Expanding表示组件可扩展      btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn4.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);      Hlayout1->addWidget(&btn1);       //水平布局: btn1  btn2     Hlayout1->addWidget(&btn2);     Hlayout1->setSpacing(10);     Hlayout2->addWidget(&btn3);      //水平布局: btn3  btn4     Hlayout2->addWidget(&btn4);     Hlayout2->setSpacing(10);      Vlayout->addLayout(Hlayout1);     //垂直布局: Hlayout1 Hlayout2     Vlayout->addLayout(Hlayout2);      Vlayout->setStretchFactor(Hlayout1,1);     Vlayout->setStretchFactor(Hlayout2,3);       Vlayout->setSpacing(10);     w.setLayout(Vlayout);           //设置布局管理器,由于Vlayout管理着Hlayout1 Hlayout2,所以只填写一个即可     w.show();     return a.exec(); }
  拉伸窗口后:
  回到顶部 3.QGridLayout网格布局3.1 以网格的方式管理界面组件
  类似于:嵌套方式来使用QBoxLayout.
  常用函数: void  addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 );                                    // row  column : 表示将widget这个部件放在网格哪个位置  void  addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 );                                           // formRow  formColumn : 表示将widget这个部件放在网格哪个位置                                           // rowSpan: widget :这个部件占多少行                                           // columnSpan: widget :这个部件占多少列  void setColumnStretch(int column,int stretch);          //设置列拉伸系数                                   // column:设置布局管理器里的第几列,第1列为0  void setRowStretch(int row,int stretch);               //设置行拉伸系数                                   // row:设置的第几行
  示例代码: int main(int argc, char *argv[]) {     QApplication a(argc, argv);     QGridLayout *layout=new QGridLayout;     QWidget w;     QPushButton btn1("test1",&w);     QPushButton btn2("test2",&w);     QPushButton btn3("test3",&w);     QPushButton btn4("test4",&w);     btn1.setMinimumSize(100,60);     btn2.setMinimumSize(100,60);     btn3.setMinimumSize(100,60);     btn4.setMinimumSize(100,60);          //设置大小策略,Expanding表示组件可扩展      btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn4.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);          layout->addWidget(&btn1,0,0);     layout->addWidget(&btn2,0,1);     layout->addWidget(&btn3,1,0);     layout->addWidget(&btn4,1,1);     layout->setRowStretch(0,1);        //设置第0行,比例为1     layout->setRowStretch(1,2);        //设置第1行,比例为2     layout->setColumnStretch(0,1);     //设置第0列,比例为1     layout->setColumnStretch(1,2);     //设置第1列,比例为2     w.setLayout(layout);               //设置布局管理器     w.show();     return a.exec(); }
  拉伸窗口后:
  3.2 QGridLayout相互嵌套
  示例代码: int main(int argc, char *argv[]) {     QApplication a(argc, argv);     QGridLayout *layout=new QGridLayout;     QVBoxLayout *Vlyt=new QVBoxLayout;     QWidget w;     QPushButton btn1("test1",&w);     QPushButton btn2("test2",&w);     QPushButton btn3("test3",&w);     QPushButton btn4("test4",&w);     QPushButton btn5("test5",&w);     btn1.setMinimumSize(100,60);     btn2.setMinimumSize(100,60);     btn3.setMinimumSize(100,60);     btn4.setMinimumSize(100,30);        //btn4 btn5按钮需要缩小高度     btn5.setMinimumSize(100,30);      //设置大小策略,Expanding表示组件可扩展     btn1.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn2.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn3.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn4.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);     btn5.setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);      Vlyt->addWidget(&btn4);     Vlyt->addWidget(&btn5);     layout->addWidget(&btn1,0,0);     layout->addWidget(&btn2,0,1);     layout->addWidget(&btn3,1,0);     layout->addLayout(Vlyt,1,1);     layout->setRowStretch(0,1);        //设置第0行,比例为1     layout->setRowStretch(1,2);        //设置第1行,比例为2     layout->setColumnStretch(0,1);     //设置第0列,比例为1     layout->setColumnStretch(1,2);     //设置第1列,比例为2     w.setLayout(layout);              //设置布局管理器     w.show();     return a.exec(); }
  拉伸窗口后:
  回到顶部 4.QFormLayout表单布局
  以表单的方式管理界面组件,专为 标签 和 字段(组件) 的形式创建的
  表单布局也支持 嵌套 ,可以管理子布局
  常用函数: addRow ( QWidget * label, QWidget * field ); addRow ( QWidget * label, QLayout * field ); addRow ( const QString & labelText, QWidget * field ); addRow ( const QString & labelText, QLayout * field );  void setLabelAlignment ( Qt::Alignment alignment );             //设置标签对齐方式,比如标签左对齐  void  setRowWrapPolicy ( RowWrapPolicy policy );           //设置字段包装策略           //比如参数WrapLongRows:表示给标签足够长空间,如果一行满足不了标签和字段显示,则将字段放在下行显示           //参数QFormLayout::WrapAllRows: 示字段信息总在标签下面列出(占据整个行大小)
  示例代码: int main(int argc, char *argv[]) {      QApplication a(argc, argv);     QWidget w(0,Qt::WindowCloseButtonHint);     QLineEdit line1(&w);     QLineEdit line2(&w);     QLineEdit line3(&w);     QFormLayout *layout= new QFormLayout;     layout->addRow("姓名:",&line1);        layout->addRow("邮箱:",&line2);     layout->addRow("地址:",&line3);     layout->setRowWrapPolicy(QFormLayout::WrapAllRows); //设置字段总在标签下面     w.setLayout(layout);     w.show();     return a.exec(); }
  效果:
  回到顶部 5.QStackedLayout栈式布局将所有组件进行垂直管理 并且每次只能有 一个组件 现在在屏幕上 只有最顶层的组件才会被最终显示 常用于 图片播放 , 安装向导 等
  特点 组件大小一致且充满父组件的显示区 能够 自由切换 需要显示的组件 不能直接嵌套其它布局管理器,只能 间接嵌套
  常用函数: int addWidget ( QWidget * widget );               //顺序添加组件  int insertWidget ( int index, QWidget * widget );       //插入组件  void removeWidget ( QWidget * widget );                 //删除组件   QWidget * currentWidget() ;                            //返回当前组件  int   currentIndex();                                  //返回当前组件索引值  void setCurrentIndex ( int index );                    //切换当前组件  void setCurrentWidget ( QWidget * widget );            //更换当前显示的组件
  代码试验: 5.1 通过定时器自动切换QStackedLayout
  Widget.h #ifndef WIDGET_H #define WIDGET_H #include  #include  #include   class Widget : public QWidget {     Q_OBJECT     QTimer *timer;     QStackedLayout  *Stack;     QPushButton btn1;     QPushButton btn2;     QPushButton btn3;     QPushButton btn4;  private slots:      void  time_handler();  public:     explicit Widget(QWidget *parent = 0);  };  #endif // WIDGET_H
  Widget.cpp #include "Widget.h" #include  #include   Widget::Widget(QWidget *parent) :     QWidget(parent),     btn1("test1",this),     btn2("test2",this),     btn3("test3",this),     btn4("test4",this) {     btn1.setMinimumSize(80,40);      Stack = new QStackedLayout;      Stack->addWidget(&btn1);     Stack->addWidget(&btn2);     Stack->addWidget(&btn3);     Stack->addWidget(&btn4);      Stack->setCurrentIndex(0);     this->setLayout(Stack);       /*启动定时器*/      QTimer *timer = new QTimer(this);      connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));      timer->start(1000);        //1000ms }  void Widget::time_handler() {     static int index=1;     Stack->setCurrentIndex((index++)%4);        //切换页面     qDebug()<<"Timer out"; }
  main.cpp int main(int argc, char *argv[]) {     QApplication app(argc,argv);     Widget w;     w.show();     return app.exec(); }
  效果:
  5.2 验间接嵌套
  修改构造函数 Widget::Widget(QWidget *parent) :     QWidget(parent),     btn1("test1",this),     btn2("test2",this),     btn3("test3",this),     btn4("test4",this) {     btn1.setMinimumSize(80,40);      QWidget *w = new QWidget;      /*设置多个子组件的父类*/     btn3.setParent(w);     btn4.setParent(w);     btn3.setMinimumSize(120,60);     btn4.setMinimumSize(120,60);      /*通过其它布局管理器来管理*/     QVBoxLayout *Vlyt = new QVBoxLayout;     Vlyt->addWidget(&btn3);     Vlyt->addWidget(&btn4);     Vlyt->setSpacing(10);     w->setLayout(Vlyt);      Stack = new QStackedLayout;      Stack->addWidget(&btn1);     Stack->addWidget(&btn2);     Stack->addWidget(w);     Stack->setCurrentIndex(0);     this->setLayout(Stack);      /*启动定时器*/     QTimer *timer = new QTimer(this);     connect(timer, SIGNAL(timeout()), this, SLOT(time_handler()));     timer->start(1000);        //1000ms  }
  效果
  点击领取Qt学习资料+视频教程~「链接」

三个让人瞬间快乐的方法,简单有效我们都在努力地活着。早出晚归,忙东忙西,所求不过一个幸福的生活。但,如果自己都不快乐,生活谈何幸福?人到中年,我们渐渐地明白,管理好自己的情绪,保持良好的心态,让自己过得开心,是一我高喊无爱者自由可余光还是看向了被爱者为什么要哭呢要多漂亮才算漂亮要多有趣才算有趣你就来这一趟我要你自在而又热烈的活着被爱的时候小雨沾湿我的裙摆我都委屈的不行不被爱的时候大雨滂沱雷声轰鸣我赤脚栽在黑夜雨里越走越快山赶着80后的你过得好吗?作者简介本人80后育娃狗,生在农村长在城市,高过考从过军(当然落榜了)有工作有贷款,顺心时生活生活充满阳光,困惑时想长眠不醒。80后的你是这样吗?评论区一起排忧解难曾经看过一个短视人生只有内外兼修,灵魂丰盈,才能真正的过得精彩而美满王阳明说世间磨难,皆是砥砺。人间是道场,淤泥生莲花。这是一种心态,更是一种境界。拥有此境界的人,已经习惯了世间的磨难,具备了抵御和战胜困难的勇气和能力。心胸已变得干净和豁达,已把磨关于良性的两性关系的基本守则关于良性的两性关系的基本守则1。遇到任何矛盾和冲突时,对事不对人,不要动不动就给人加标签戴帽子,用你的主观认知去贬低对方,差异不是致命的,嫌弃才是致命的2。发自内心地去观察,研究,善待自己,让一切顺其自然有人说人这一生,只欠自己。的确,人活一世,能自始至终陪在你身边的,只有自己。但也正是因此,你总是习惯性委屈自己。你或许曾为了别人,一度为难自己你或许曾因为倔强,被现实撞得头破血流你抱团取暖成为奢望我的教授跟我说,人生来孤独,故我们要享受独处。原创勿搬细想来,可不就是这样,人生的路到最后连父母都会离开我们。更何况其他人。我们终日费心劳神维护的社交,好似在抱团取暖,只大家心知肚丫髻山之行十一假期高速公路免费,这样的羊毛不能不薅。想着去个远点的地方,感觉能多占些便宜。于是,将目标设定为平谷的石林峡(再远就出京了捂脸)。十一的高速公路,跑过的都懂汗。十一点半,才跑到京朝鲜观察,一名八零后姑娘的朝鲜体验之旅作为一个八零后出生的姑娘,对朝鲜一直充满了好奇。所以,第一次的出国之旅,选择了朝鲜。身边的朋友对我去朝鲜也感到好奇,她们觉得去韩国旅行可能更合适。因为在韩国,有更多的购物场所,有更神秘的古巴,美洲的朝鲜国,美景与美女并存古巴是四川麻将传播最远的地方古巴青年在街头悠闲地打麻将古巴共和国位于加勒比海的西部,夹在北美洲和南美洲之间,特殊的地理位置造就了他风情万种的绝美景色,这里美景和美女并存!当然更吸引不意外!江苏女排2大功臣或缺席排超,00后新星全面挑大梁20222023赛季中国女排超级联赛下月或将开战,上届亚军江苏女排本赛季或迎彻底的换血阵容,江苏排协没有给前任队长也是奥运冠军的张常宁报名,女排世锦赛主力龚翔宇带伤上阵归来后恐怕很
丰胸秘籍白嫩海鲜意面需要的原料1杯意大利蝴蝶面1盒蛤蜊1条鱿鱼,切碎12杯奶酪,磨碎2汤匙黄油14杯白葡萄酒1茶匙盐12茶匙黑胡椒1汤匙橄榄油做法在一个大锅里,煮沸大约4杯水,加入盐。加入意大利蝴蝶面金山这个传承百年的制作技艺出了新产品,有了新口味酱青瓜嫩姜芽榨菜心糖蒜什锦菜除了这些熟面孔,位于金山区张堰镇百家村的上海金山酱菜调味品厂有限公司(以下简称金山酱菜厂)近日迎来了一位新成员。这个是我们新研发的一款酱瓜产品,有咸甜辣新民快评卸载预置软件,加载选择权新买的手机,内存却显示已经占用25,这些软件不但占用手机内存拖慢手机运行速度,而且消耗流量电量。图源IC新购的手机不会是白板一块,往往预先安装了不少软件。其中,有一些是基本功能软件表面光鲜亮丽的泰国人妖,到了晚年却生活困苦,背后全是辛酸泪大量的游客前往泰国都是被泰国人妖所吸引,他们非常好奇为什么会有特殊的群体产生,也对泰国人妖这个群体充满了好奇,其实他们的存在非常的可怜,表面上看光鲜亮丽,其实在晚年的时候生活艰苦。刘禅和诸葛亮的关系是怎么样的呢?(客观评价)刘禅和诸葛亮的关系是怎么样的呢?如果我们真的认真梳理一下刘禅和诸葛亮呆在一起的时间,我们就可以很好的推算出来。在诸葛亮第一次北伐开始到诸葛亮去世,诸葛亮一直在汉中进行防御和进攻,真真正的财富是指在你睡觉时仍然能为你赚钱的资产金钱是我们转换时间和财富的方式。地位是你在社会等级体系中所处的位置。拥有多少资产才能财富自由,这是很多投资者讨论的问题,大多数人认为一般人拥有300万,500万就能财富自由了,我看李清照的朋友圈绝不是凄凄惨惨戚戚,王安石秦桧都扯得上关系李清照是妥妥的官三代,她的出生书香门第,家世显赫,社会关系网非同一般她的至亲是李格非王珪,她的亲戚有大奸臣蔡京秦桧,她有个徒弟叫唐婉,有个粉丝叫赵佶,有个重量级的远房亲戚叫王安石,论证古代巴比伦以物易物的叙述和信用货币的关系前言尽管标准的经济学教科书文献通过指出易货经济的低效率来推动货币的出现,但实际上没有历史证据表明货币实际上是这样产生的。由于缺乏易货经济存在的证据,因此试图假设一种与早期社会组织更金税四期对税收政策,关系到个人税务筹划,到底有哪些难点和痛点小编在之前的几个篇章,介绍了金税4期的一个建设背景,目的,以及它发展的4个历程,也介绍到了金税4期的5个特点,第1点分别是以票控税到以数制税第2点,是税务和非税业务的全面监控第3点13,大冷门!前欧冠冠军创耻辱,落后巴黎8分,梅西第43冠在招手北京时间2月6日凌晨,法甲第22轮结束一场比赛,夺冠热门之一的马赛主场13爆冷输给尼斯,外加朗斯主场11爆冷战平布雷斯特,这样巴黎2大争冠对手集体送礼,领先优势扩大到8分,夺冠越来下午0332岁丁宁公布喜讯,球迷乐开花送祝福大家好,欢迎观看本期视频,在视频开始还是发了各位朋友啊,能够点点赞点点关注,谢谢大家。和大家说一下国乒的最新情况,国乒呢,在结束完视乒赛预选赛之后呢,将会在春节迎来一系列魔鬼赛程,