qt布局管理-缩放、多窗口切换

  1. 关于缩放的布局
  • 所有控件要求与主窗口同时缩放,那么在所有控件设置好布局后,最后点击最外侧的主控件,选择水平布局或者垂直布局即可。
  • 另外每个空间的属性可更改,如SizePolicy用于设置空间是否可缩放等(如希望缩放,则选择expanding)。
  1. 同一主窗口下的多窗口切换
  • 可以利用QStackedLayout类进行堆叠放置,然后利用stackLayout->setCurrentIndex(n)来控制显示的页面。因为该类设置仅显示一张画面,满足需求。在新增好布局后再在主窗口下重新设置QVBoxLayout网状布局,一定要再定义一个QWidget,然后在其基础上添加已设置好的布局Layout,最后再widget->setLayout(Layout);
  1.  关于单击QTreeWidget不同子项如何进行响应的参考回答,如下代码:
 1 //这是方法一:
 2 //适用于子节点较少时
 3 bool eventFilter(QObject * pObject, QEvent * pEvent)
 4 {
 5     if(QEvent::MouseButtonPress == pEvent.type() /* 判断是不是按键事件 */)
 6     {
 7         QMouseEvent *pMouseEvent = static_cast<QMouseEvent*>(pEvent);
 8         if(Qt::RightButton == pMouseEvent->button()  /* 判断是不是右键按下 */)
 9         {
10             if(pObject == **  /* 判断 pObject是否等于某个treeWidgetItem*/)
11                 {
12                   /* 显示不同的菜单 */
13                 }
14         }
15            
16     } 
17 }
18  
19 //方法二:
20 //就是继承,重载按键事件
21 //适用于子节点较多,以及子节点右键菜单多而不同情况

另一种回答:

利用子节点是否有父节点来判断,点击节点是否响应槽函数。如:

QTreeWidgetItem *parent = item->parent();//获得父节点
  if(NULL==parent)
      return;

 QList是一个最常用的容器类,用它定义一个对象通常是 

QList <int>list;
其中int代表给定的类型,也就是说现在定义了一个有符号整形的容器,让后给里面装值
list<<2<<3<<4<<6;
现在就可以使用foreach(int i,list)这样就可以遍历整个容器了.分别将容器中的值放到循环遍历放到变量中。
    QList <int>list;
    list <<2<<4<<1<<6;
    foreach(int str,list)
    qDebug()<<str<<endl;

Qt提供的一种格式化字符串输出的函数arg():
1. str=QString(“%1 %2 (%3s-%4s)”)
2. arg(“permissive”).arg(“society”).arg(1950).arg(1970);
这段代码中,%1, %2, %3, %4作为占位符,将被后面的arg()函数中的内容依次替换,比如%1将被替换成permissive,%2将被替换成society,%3将被替换成1950,%4将被替换曾1970,最后,这句代码输出为:permissive society (1950s-1970s). arg()函数比起sprintf()来是类型安全的,同时它也接受多种的数据类型作为参数,都会被转化为QString类型然后进行替换。

待更新...

原文地址:https://www.cnblogs.com/ruoke9/p/8571997.html