如何以编程方式更改布局中小部件的顺序?

我确实有一个QVBoxLayout包含一些自定义小部件的工具,它们本身主要由一个标签和两个按钮组成。您几乎可以用某种方式谈论某种自制桌子。我知道有现成的表格小部件可用,但是我想使用自己的表格小部件。

我想要实现的是:当我单击其中一个小部件中的“向上”按钮时,它应该向上移动,或者换句话说:它应该QVBoxLayout以移动的方式更改其在父级中的当前位置/索引每次点击都向上(或向下)跳一级。那可能吗?我该如何实现?我需要将其作为一种用户友好的方式来设置布局中项目的顺序。

我首先尝试从我的小部件中获取父布局:

QVBoxLayout* myLayout = qobject_cast<QVBoxLayout*>(this->parentWidget());

这似乎可行,但是如何从这里继续?谢谢你的帮助!

CE格瑟

您可以尝试如下操作:

enum MoveDirection { MoveUp, MoveDown };
bool move(QWidget *widget, MoveDirection direction) {
  QVBoxLayout* myLayout = qobject_cast<QVBoxLayout*>(widget->parentWidget()->layout());

  //Gets the index of the widget within the layout
  const int index = myLayout->indexOf(widget); 

  if (direction == MoveUp && index == 0) {
    //Can't move up
    return false;
  }

  if (direction == MoveDown && index == myLayout->count()-1 ) {
    //Can't move down
    return false;
  }

  //Compute new index according to direction
  const int newIndex = direction == MoveUp ? index - 1 : index + 1;
  //Remove widget from layout
  myLayout->removeWidget(widget);
  //Insert widget at new position
  myLayout->insertWidget(newIndex , widget);

  return true;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过鼠标拖放来更改布局中小部件的顺序?

来自分类Dev

如何以编程方式将Qt小部件(QPushButton,QTextEdit,QLabel)添加到Qt Designer布局?

来自分类Dev

如何更改以编程方式创建的animationPositioned小部件的状态?

来自分类Dev

可可-如何以编程方式更改NSCollectionViewItem的大小和布局?

来自分类Dev

如何以编程方式更改视图布局的属性

来自分类Dev

如何删除布局中小部件周围的间距?

来自分类Dev

如何以编程方式触发带有按钮的可排序小部件的更新回调?

来自分类Dev

如何以编程方式隐藏QtDesigner“设计”模式创建的小部件?

来自分类Dev

如何以编程方式清除ConstraintLayout中的小部件(例如ImageView)的约束?

来自分类Dev

如何以编程方式设置SpanSelector小部件的最小值和最大值

来自分类Dev

如何以编程方式触发带有按钮的可排序小部件的更新回调?

来自分类Dev

如何以编程方式创建布局约束

来自分类Dev

我想在kivy中动态更改网格布局中小部件的颜色

来自分类Dev

以编程方式更改小部件的渐变背景

来自分类Dev

以编程方式更改小部件的渐变背景

来自分类Dev

如何以编程方式更改使用自动布局在情节提要上创建的UIImageView的大小?

来自分类Dev

如何以闪亮的方式内联显示小部件

来自分类Dev

以编程方式创建小部件

来自分类Dev

以编程方式创建小部件

来自分类Dev

如何以编程方式更改Eclipse Preferences

来自分类Dev

如何以编程方式更改飞行模式?

来自分类Dev

如何以编程方式更改PHP的日期?

来自分类Dev

如何以编程方式更改语言?

来自分类Dev

如何以编程方式更改EditText外观?

来自分类Dev

如何以编程方式更改密码?

来自分类Dev

如何以编程方式更改视图大小?

来自分类Dev

如何以编程方式更改或更新NSLayoutConstraint

来自分类Dev

如何以编程方式更改标签的字体?

来自分类Dev

如何以编程方式更改EditText底线

Related 相关文章

  1. 1

    如何通过鼠标拖放来更改布局中小部件的顺序?

  2. 2

    如何以编程方式将Qt小部件(QPushButton,QTextEdit,QLabel)添加到Qt Designer布局?

  3. 3

    如何更改以编程方式创建的animationPositioned小部件的状态?

  4. 4

    可可-如何以编程方式更改NSCollectionViewItem的大小和布局?

  5. 5

    如何以编程方式更改视图布局的属性

  6. 6

    如何删除布局中小部件周围的间距?

  7. 7

    如何以编程方式触发带有按钮的可排序小部件的更新回调?

  8. 8

    如何以编程方式隐藏QtDesigner“设计”模式创建的小部件?

  9. 9

    如何以编程方式清除ConstraintLayout中的小部件(例如ImageView)的约束?

  10. 10

    如何以编程方式设置SpanSelector小部件的最小值和最大值

  11. 11

    如何以编程方式触发带有按钮的可排序小部件的更新回调?

  12. 12

    如何以编程方式创建布局约束

  13. 13

    我想在kivy中动态更改网格布局中小部件的颜色

  14. 14

    以编程方式更改小部件的渐变背景

  15. 15

    以编程方式更改小部件的渐变背景

  16. 16

    如何以编程方式更改使用自动布局在情节提要上创建的UIImageView的大小?

  17. 17

    如何以闪亮的方式内联显示小部件

  18. 18

    以编程方式创建小部件

  19. 19

    以编程方式创建小部件

  20. 20

    如何以编程方式更改Eclipse Preferences

  21. 21

    如何以编程方式更改飞行模式?

  22. 22

    如何以编程方式更改PHP的日期?

  23. 23

    如何以编程方式更改语言?

  24. 24

    如何以编程方式更改EditText外观?

  25. 25

    如何以编程方式更改密码?

  26. 26

    如何以编程方式更改视图大小?

  27. 27

    如何以编程方式更改或更新NSLayoutConstraint

  28. 28

    如何以编程方式更改标签的字体?

  29. 29

    如何以编程方式更改EditText底线

热门标签

归档