qt布局管理-缩放、多窗口切换
- 关于缩放的布局
- 所有控件要求与主窗口同时缩放,那么在所有控件设置好布局后,最后点击最外侧的主控件,选择水平布局或者垂直布局即可。
- 另外每个空间的属性可更改,如SizePolicy用于设置空间是否可缩放等(如希望缩放,则选择expanding)。
- 同一主窗口下的多窗口切换
- 可以利用QStackedLayout类进行堆叠放置,然后利用stackLayout->setCurrentIndex(n)来控制显示的页面。因为该类设置仅显示一张画面,满足需求。在新增好布局后再在主窗口下重新设置QVBoxLayout网状布局,一定要再定义一个QWidget,然后在其基础上添加已设置好的布局Layout,最后再widget->setLayout(Layout);
- 关于单击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类型然后进行替换。
待更新...